//### This file created by BYACC 1.9(/C# extension  0.9)
//### C# capabilities added 11 Sep 2000
//### static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";



// the current file was generated on 06/16/2010 at 16:57 


//#line 2 "CqlGrammar.y"

/*#define YYDEBUG*/

/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!                                                                           !!
!!         ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION       !!
!!                                                                           !!
!!                 DO NOT CHANGE THIS FILE (CqlParser.cs) BY HAND!!!!        !!
!!                          YOU HAVE BEEN WARNED !!!!                        !!
!!                                                                           !!
!!         ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION       !!
!!                                                                           !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/

/*-----------------------------------------------------------------------------
// <copyright file="CqlGrammar.y" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// @owner  Microsoft
// @backupOwner Microsoft
//---------------------------------------------------------------------------*/

using System;
using System.Data.Common.EntitySql.AST;
using System.Data.Entity;

/*//////////////////////////////////////////////////////////////////////////////

 This pragma is needed since symbols used for defining precedence are not always
 code generated by yacc

///////////////////////////////////////////////////////////////////////////////*/
#pragma warning disable 414




//#####################################################################
// namespace: System.Data.Common.EntitySql
//#####################################################################
namespace System.Data.Common.EntitySql {
//#####################################################################
// class: CqlParser
// does : encapsulates yacc() parser functionality in a C# class
//#####################################################################
internal partial class CqlParser{

Boolean yydebug;        //do I want debug output?
static int YYMAJOR = 1;
static int YYMINOR = 9;
int yynerrs;            //number of errors so far
int yyerrflag;          //was there an error?
int yychar;             //the current working character

//########## MESSAGES ##########
//###############################################################
// method: debug
//###############################################################
void debug(String msg)
{
  if (yydebug)
    Console.WriteLine(msg);
}

//########## STATE STACK ##########
static int YYSTACKSIZE = 500;  //maximum stack size
int[] statestk; int stateptr;             //state stack
//###############################################################
// methods: state stack push,pop,drop,peek
//###############################################################
void state_push(int state)
{
  if (stateptr>=YYSTACKSIZE-1)         //overflowed?
    yyerror_stackoverflow();
  statestk[++stateptr]=state;
}
int state_pop()
{
  if (stateptr<0)                    //underflowed?
    return -1;
  return statestk[stateptr--];
}
void state_drop(int cnt)
{
int ptr;
  ptr=stateptr-cnt;
  if (ptr<0)
    return;
  stateptr = ptr;
}
int state_peek(int relative)
{
int ptr;
  ptr=stateptr-relative;
  if (ptr<0)
    return -1;
  return statestk[ptr];
}
//###############################################################
// method: init_stacks : allocate and prepare stacks
//###############################################################
Boolean init_stacks()
{
  statestk = new int[YYSTACKSIZE];
  stateptr = -1;
  val_init();
  return true;
}
//###############################################################
// method: dump_stacks : show n levels of the stacks
//###############################################################
void dump_stacks(int count)
{
int i;
  Console.WriteLine("=index==state====value=     s:"+stateptr+"  v:"+valptr);
  for (i=0;i<count;i++)
    Console.WriteLine(" "+i+"    "+statestk[i]+"      "+valstk[i]);
  Console.WriteLine("======================");
}


//########## SEMANTIC VALUES ##########
//## **default:object
//String   yytext;//user variable to return contextual strings
object yyval; //used to return semantic vals from action routines
object yylval;//the 'lval' (result) I got from yylex()
object [] valstk;
int valptr;
//###############################################################
// methods: value stack push,pop,drop,peek.
//###############################################################
void val_init()
{
  valstk=new object[YYSTACKSIZE];
  yyval=(object)0;
  yylval=(object)0;
  valptr=-1;
}
void val_push(object val)
{
  if (valptr>=YYSTACKSIZE)
    return;
  valstk[++valptr]=val;
}
object val_pop()
{
  if (valptr<0)
    return (object)-1;
  return valstk[valptr--];
}
void val_drop(int cnt)
{
int ptr;
  ptr=valptr-cnt;
  if (ptr<0)
    return;
  valptr = ptr;
}
object val_peek(int relative)
{
int ptr;
  ptr=valptr-relative;
  if (ptr<0)
    return (object)-1;
  return valstk[ptr];
}
//#### end semantic value section ####
public static short IDENTIFIER=257;
public static short ESCAPED_IDENTIFIER=258;
public static short PARAMETER=259;
public static short LITERAL=260;
public static short ALL=261;
public static short AND=262;
public static short ANYELEMENT=263;
public static short APPLY=264;
public static short AS=265;
public static short ASC=266;
public static short BETWEEN=267;
public static short BY=268;
public static short CASE=269;
public static short CAST=270;
public static short COLLATE=271;
public static short COLLECTION=272;
public static short CROSS=273;
public static short CREATEREF=274;
public static short DEREF=275;
public static short DESC=276;
public static short DISTINCT=277;
public static short ELEMENT=278;
public static short ELSE=279;
public static short END=280;
public static short EXCEPT=281;
public static short EXISTS=282;
public static short ESCAPE=283;
public static short FLATTEN=284;
public static short FROM=285;
public static short FULL=286;
public static short FUNCTION=287;
public static short GROUP=288;
public static short GROUPPARTITION=289;
public static short HAVING=290;
public static short IN=291;
public static short INNER=292;
public static short INTERSECT=293;
public static short IS=294;
public static short JOIN=295;
public static short KEY=296;
public static short LEFT=297;
public static short LIKE=298;
public static short LIMIT=299;
public static short MULTISET=300;
public static short NAVIGATE=301;
public static short NOT=302;
public static short NULL=303;
public static short OF=304;
public static short OFTYPE=305;
public static short ON=306;
public static short OR=307;
public static short ORDER=308;
public static short OUTER=309;
public static short OVERLAPS=310;
public static short ONLY=311;
public static short QMARK=312;
public static short REF=313;
public static short RELATIONSHIP=314;
public static short RIGHT=315;
public static short ROW=316;
public static short SELECT=317;
public static short SET=318;
public static short SKIP=319;
public static short THEN=320;
public static short TOP=321;
public static short TREAT=322;
public static short UNION=323;
public static short USING=324;
public static short VALUE=325;
public static short WHEN=326;
public static short WHERE=327;
public static short WITH=328;
public static short COMMA=329;
public static short COLON=330;
public static short SCOLON=331;
public static short DOT=332;
public static short EQUAL=333;
public static short L_PAREN=334;
public static short R_PAREN=335;
public static short L_BRACE=336;
public static short R_BRACE=337;
public static short L_CURLY=338;
public static short R_CURLY=339;
public static short PLUS=340;
public static short MINUS=341;
public static short STAR=342;
public static short FSLASH=343;
public static short PERCENT=344;
public static short OP_EQ=345;
public static short OP_NEQ=346;
public static short OP_LT=347;
public static short OP_LE=348;
public static short OP_GT=349;
public static short OP_GE=350;
public static short UNARYPLUS=351;
public static short UNARYMINUS=352;
public static short YYERRCODE=256;
static short [] yylhs = {                           -1,
    0,    0,    1,    2,    2,    4,    4,    5,    5,    5,
    3,    9,    9,   12,   12,   13,   14,   14,   15,   15,
   16,   10,   10,   11,   11,   18,   27,   20,   30,   20,
   26,   26,   26,   28,   28,   21,   31,   31,   32,   32,
   32,   32,   32,   34,   34,   35,   36,   36,   36,   36,
   36,   36,   36,   36,   36,   36,   37,   37,   22,   22,
   38,   23,   23,   39,   24,   24,   41,   40,   25,   25,
   44,   42,   45,   45,   46,   46,   43,   43,   47,   47,
   48,   48,   48,   50,   50,   19,   19,   19,   19,   19,
   19,   19,   19,   19,   19,   19,   19,   19,   19,   51,
   62,   63,   52,   52,   52,   52,   52,   52,   52,   52,
   52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
   52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
   52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
   52,   52,   52,   52,   52,   52,   52,   66,   66,    8,
   67,   33,   33,   29,   29,   64,   64,   68,   68,   69,
   58,   58,   58,    7,   53,   59,   54,   54,   55,   56,
   57,   57,   57,   57,   57,   57,   60,   60,   60,   70,
   70,   71,   71,   72,   72,   72,   65,   65,   65,   65,
   65,   73,   74,   74,   74,   74,    6,    6,   49,   61,
   61,   17,   17,   17,   17,   75,   76,   77,   78,   78,
   79,
};
static short [] yylen = {                            2,
    0,    1,    2,    0,    1,    1,    2,    3,    3,    3,
    3,    0,    1,    1,    2,    7,    2,    3,    1,    3,
    2,    1,    1,    0,    1,    6,    0,    5,    0,    6,
    0,    1,    1,    0,    4,    2,    1,    3,    1,    3,
    1,    3,    1,    3,    5,    3,    2,    3,    2,    3,
    2,    1,    2,    2,    3,    2,    2,    2,    0,    1,
    2,    0,    1,    3,    0,    1,    0,    3,    0,    1,
    0,    6,    0,    2,    0,    2,    1,    3,    2,    4,
    0,    1,    1,    1,    3,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
    3,    4,    3,    3,    3,    3,    3,    2,    2,    3,
    3,    3,    3,    3,    3,    3,    4,    3,    3,    3,
    4,    4,    4,    4,    4,    4,    3,    4,    1,    6,
    6,    6,    7,    6,    7,    7,    8,    3,    4,    5,
    6,    3,    3,    3,    2,    3,    1,    1,    1,    3,
    3,    3,    1,    1,    3,    3,    4,    4,    5,    2,
    4,    4,    3,    3,    4,    4,    6,    8,    4,    5,
    3,    6,    6,    3,    6,    6,    6,    8,   10,    0,
    1,    2,    2,    6,    8,   10,    1,    1,    2,    2,
    1,    3,    3,    4,    3,    4,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    4,    4,    4,    1,    3,
    2,
};
static short [] yydefred = {                         0,
    0,    0,    2,    0,    0,    6,  199,  197,   87,  200,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  201,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  198,   86,   89,
   91,   92,   93,   94,   95,   96,   97,   98,   99,    0,
    0,  129,  147,  149,    0,    3,    0,    0,   14,    7,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  148,    0,    0,    0,    0,
    0,    0,    0,    0,   22,    0,    0,    0,    0,    0,
    0,    8,    0,    9,    0,   10,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   15,    0,    0,    0,  156,    0,
    0,    0,    0,    0,    0,    0,    0,   32,   33,    0,
    0,    0,    0,    0,    0,    0,    0,  154,    0,    0,
    0,    0,  100,    0,    0,    0,  163,  174,    0,  171,
    0,    0,    0,    0,    0,    0,    0,  127,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  164,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   25,   11,  123,    0,    0,    0,
  157,    0,    0,  166,  124,  122,  125,    0,  169,  162,
    0,    0,  165,    0,    0,  161,  126,    0,    0,    0,
    0,    0,    0,   39,   41,   43,    0,    0,   60,    0,
    0,    0,    0,    0,  128,    0,    0,    0,    0,    0,
    0,    0,   17,    0,    0,   19,    0,    0,    0,    0,
    0,    0,  191,    0,  170,    0,    0,    0,  152,  155,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   52,    0,    0,    0,    0,    0,    0,    0,
    0,   63,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   21,    0,  203,  204,  205,    0,
   18,    0,    0,  189,    0,    0,  131,  190,    0,    0,
  167,    0,  177,    0,  132,  130,    0,    0,    0,   40,
   42,    0,   57,   47,   54,    0,   53,   49,    0,   58,
   51,    0,    0,   46,    0,   67,    0,   66,    0,  176,
    0,  175,  173,  172,    0,    0,    0,  134,    0,    0,
    0,    0,   20,    0,  195,    0,  192,  193,    0,    0,
    0,  133,    0,    0,   55,   48,   50,    0,    0,    0,
    0,   26,   70,    0,  182,  183,    0,  135,  136,    0,
    0,    0,    0,  209,   16,  196,  194,  168,    0,  178,
   35,    0,    0,   71,    0,  137,  206,  207,  211,    0,
  208,    0,    0,    0,  210,  179,    0,    0,   77,    0,
   82,    0,   83,   79,    0,    0,    0,    0,    0,    0,
   78,    0,   72,    0,  184,   80,    0,    0,    0,  185,
    0,  186,
};
static short [] yydgoto = {                          2,
    3,    4,   56,    5,    6,   74,   75,   76,   57,   84,
  196,   58,   59,  194,  245,  246,  295,   85,   86,   87,
  155,  228,  281,  337,  372,  140,  151,  263,  147,  152,
  222,  223,  224,  225,  226,  277,  278,  229,  282,  338,
  370,  373,  408,  403,  417,  423,  409,  414,   38,   89,
   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,
   49,   50,   51,   52,  296,   53,   54,   63,  131,  340,
  341,  375,  252,  253,  297,  298,  299,  383,  384,
};
static short [] yysindex = {                      -321,
 4723,    0,    0, -269, -321,    0,    0,    0,    0,    0,
 -309, -271, -284, -204, -176, -162, -155, -131, -118,  -94,
  -84,  -75, 4723,    0,  -73,  -51,  -46,  -42,  -37, 4054,
 4723, 4723, 4723, -182, -181, -211, 3614,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, -111,
   14,    0,    0,    0, -171,    0, 4054, -269,    0,    0,
 4054, 4723, -207, 4723, 4723, 4054, 4054, 4054, 4054, -225,
 4054, 4723, 4723,  -36,  -28,    0, 5025, 4723, 4054, 4723,
 4054, 4723,    0,  -13,    0, 3614,   22, 3614, -291,   -8,
   -8,    0, -232,    0, -226,    0, 4723, 4723, 4723, 4723,
 4723,  174, 4723, -186, 4723, 4723, 4139, -171, 4723, 4723,
 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723,
 4723, 4723,   -6,   -5,    0,   -3, 3098, 4723,    0, 4723,
   53, 3170, 3198,    3,   13,   18,   19,    0,    0, 4054,
   41, -213, 3270, 3298,   42, 3370, -159,    0,   47, 3442,
 -225,   62,    0, 4796,   68, 4723,    0,    0, 4054,    0,
 4054, 5025, 4955, 5124, 5053, 3413, -141,    0,   59, 2998,
 4723, 4723, 4723, 3814, 2926, 4723, 3341,    0, 4037, -177,
 -177,   -8,   -8,   -8, 4037, 4037, 1461, 1461, 1461, 1461,
 5025, 5025, -256,  160,    0,    0,    0, 4723, 3614, 3514,
    0, -171, 4723,    0,    0,    0,    0,   99,    0,    0,
 -171, -241,    0, -171, 4723,    0,    0, -171,  124, -225,
 4212,  122,  -58,    0,    0,    0, 4723,  167,    0, 3614,
  125, -110,  127,  -81,    0,  123, -194, 4723, 4955, 5053,
 3786, 3341,    0, -216,  -69,    0,  135, 3614, 4723, -254,
 -161, -245,    0, 3026,    0, -214, -171, -128,    0,    0,
 -127,  139, 4723,  124, 3370,  -58,  149,  151, 4796, -249,
 -272,  179,    0, -265,  223, -248, 4796, 4796, 3614,  226,
  207,    0,  170,  170,  170,  170, -183, -171, -112, 5096,
 4723,  161,  175,  176,    0,  169,    0,    0,    0, -171,
    0, 4054, 3614,    0, 4285, -171,    0,    0, 4358, -171,
    0, -171,    0, -102,    0,    0, 4054,  178, 4723,    0,
    0,  -58,    0,    0,    0,  216,    0,    0,  230,    0,
    0,  236,  228,    0, 4723,    0,  229,    0,  222,    0,
  222,    0,    0,    0, -171, -100,  -39,    0, 5096, -216,
 -171, -171,    0,  204,    0,  -66,    0,    0,  -61,  -20,
  -57,    0,  209,  178,    0,    0,    0, 4723,  178, 4723,
  272,    0,    0,  212,    0,    0,   73,    0,    0,  214,
  115, -216,  -56,    0,    0,    0,    0,    0, -171,    0,
    0, 3614, 3614,    0, 4723,    0,    0,    0,    0, -171,
    0,  227, 4723, 3542,    0,    0, 2954, -276,    0, -171,
    0,  294,    0,    0, 4723, 4723,  259, -151, -199, 3614,
    0, 4723,    0, -171,    0,    0, 3614,  -45, -171,    0,
  231,    0,
};
static short [] yyrindex = {                      1510,
    0,    0,    0, 4431, 3981,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 3642, 3714, 3742,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0, 4504,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 4577,
    0,    0,    0,  173,  262,    0, 2591,    0,    0,    0,
    0,    0, 3908,    0,    0,   76,    0, -117,    0,  532,
  621,    0, 4577,    0, 4577,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  563,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   28,    0,    0,    0,    0,
 4650,    0,    0,    0,   39,    0,    0,    0,    0,    0,
    0, 2662,  303, 2023, 2307, 1576,    0,    0,    0, 2378,
    0,    0,    0, 2861, 2094,    0, 1876,    0, 1647,  979,
 1068,  711,  800,  889, 1723, 1798, 1157, 1242, 1331, 1420,
 2733, 2804,    0,    0,    0,    0,    0,    0,  287,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 4869, 4650,
    0, 1185,   31,    0,    0,    0,    0,   82,    0, -108,
    0,    0,    0,    0,    0,    0,    0,    0,  311, 2449,
 2520, 1947,    0,    0,    0,    0,    0, -169,    0, -139,
    0,  -83,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 4869, -109,    0,  -15, 1294,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
   33,    0,  352,  352,  352,  352,    0,    0,    0, 2165,
    0,    0,    0,    0,    0,  -44,    0,    0,    0,    0,
    0,    0, -166,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  289,    0,    0,
    0,   95,    0,    0,    0, 4942,    0,    0,    0,    0,
    0,    0, 2909,    0,    0,    0,   84,    0,    0,    0,
  443,    0,    0,    0,    0,    0,    0,    0, 2236,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  290,    0,    0,    0,    0,  195,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   83,   71,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   11,   66,    0,    0,
    0,    0,    0,    0,    0,    0,   85,    0,   11,  101,
    0,    0,    0,    0,    0,    0,  102,    0,    0,    0,
    0,    0,
};
static short [] yygindex = {                         0,
    0,    0,    0,    0,  571,   -1,  577,  578,    0,  -47,
    0,    0,  522,    0,    0,  283, -342,   30,   26,    0,
    0,    0,    0,    0,    0,  -86,    0,  320, -257,    0,
    0, -209,  -54,  365,  366,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  180,  171,  186,  -67,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  -43,    0,    0,    0,    0,  205,
    0,  251,    0,    0,    0,    0,    0,    0,  199,
};
static int YYTABLESIZE=5474;
static short[] yytable = {                         34,
    7,    8,    1,  304,  142,  318,  159,  380,  161,  124,
   81,  266,  308,  126,  323,    7,    8,   55,  134,  135,
  136,  137,  325,  141,   61,  148,   37,  153,  138,  328,
   37,  145,   65,  149,  138,  138,  326,  156,   59,  399,
    7,    8,  415,  329,  139,  324,  331,  157,   77,   64,
  139,  139,  416,  123,   62,  292,   88,   90,   91,  322,
  332,  364,    7,    8,  219,   73,  411,  333,  334,  257,
   68,  128,  129,    7,    8,   23,  413,  369,  243,  305,
  171,   62,   45,   69,   75,    7,    8,  127,  309,  132,
  133,  232,  208,  234,   38,   61,  293,   88,  143,  294,
   74,   76,  158,  144,  172,  146,  178,  150,  160,  158,
  158,  173,  159,  159,  312,  156,  288,  306,  130,   96,
  313,  210,  162,  163,  164,  165,  166,  345,  170,   65,
  174,  175,  177,  264,  179,  180,  181,  182,  183,  184,
  185,  186,  187,  188,  189,  190,  191,  192,   92,   94,
  121,   93,   95,  199,  108,  200,  158,   66,  251,  159,
  260,  235,  236,  153,  112,  113,  114,  256,  258,  215,
  306,   67,   88,  307,  261,  216,  153,  424,   68,  146,
  306,  230,  153,  425,   88,  153,   88,  153,  231,  187,
  233,  244,  187,  289,   64,  187,  239,  240,  241,  153,
  250,  242,   69,  306,  306,  153,  315,  316,  148,  250,
  250,   84,  259,  314,  270,   70,  250,   84,  156,  306,
   85,   84,  348,  248,  284,   23,   85,  271,  254,  306,
   85,  306,  362,  272,  378,  250,  273,  356,  274,   71,
  146,  359,  250,  346,  347,  188,  265,  156,  188,   72,
  275,  188,  279,  286,  354,  250,  276,   41,   73,  300,
   78,   90,  156,  290,  148,  301,  360,  156,  386,  363,
   41,  389,  400,  387,  303,  122,   41,  390,  401,   41,
  148,   41,   79,  429,  202,  250,  250,   80,  146,  430,
  202,   81,  306,   41,  146,  379,   82,   93,  244,   41,
  153,  377,  146,  146,  357,   95,  154,  381,  250,   81,
  361,  306,  153,  153,  388,  153,  349,  153,   37,  153,
   37,  153,  153,  108,  153,  195,   59,  193,   59,   81,
   88,  197,  201,  153,   88,  153,  153,  204,   37,   81,
   65,   81,  153,  250,  146,   81,   59,  205,  250,  250,
  382,  180,  206,  207,  153,   45,  153,   37,  153,   37,
  146,   37,  153,   65,   73,   37,  418,   65,   45,   59,
   45,   62,   45,   59,   45,  209,  213,   45,   68,   45,
  250,  217,   38,   61,   38,   61,  220,  402,   45,   62,
   45,   45,  237,  392,  227,  393,   73,   45,  382,   74,
   73,   68,   38,   61,  306,   68,   23,  396,  250,   45,
   23,   45,   62,   45,   69,   75,   62,   45,   69,   75,
  404,   38,  428,   38,  247,   38,   61,  431,  407,   38,
   61,   74,   76,  255,   88,   74,   76,   88,   88,   88,
  420,  407,  181,   88,  262,   88,  306,  427,   88,  398,
  269,   88,   88,   88,  280,   88,  287,   88,   88,  283,
   88,  285,   88,   88,   88,   88,   88,   88,  302,   88,
   88,   88,  317,  327,   88,  167,  168,  169,   88,   88,
   88,   88,   88,  320,   64,  321,  330,   88,  342,  343,
  344,   88,   88,  335,  350,   88,  336,  339,   88,   88,
  306,   88,   64,   88,   88,   88,  215,   88,  351,  352,
  365,   88,   88,   88,   88,   88,   88,   88,   88,   88,
   88,   88,   88,   90,  366,   64,   90,   90,   90,   64,
  367,  109,   90,  368,   90,  374,  371,   90,  385,  394,
   90,   90,   90,  391,   90,  395,   90,   90,  397,   90,
    7,   90,   90,   90,   90,   90,   90,  422,   90,   90,
   90,  406,   24,   90,  101,  432,  160,   90,   90,   90,
   90,   90,  102,   28,   30,   60,   90,   35,   36,  125,
   90,   90,  353,  319,   90,  267,  268,   90,   90,  426,
   90,  376,   90,   90,   90,  421,   90,  419,  405,    0,
   90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
   90,   90,    0,  180,    0,    0,  180,  180,  180,    0,
  108,    0,  180,    0,  180,    0,    0,  180,    0,    0,
  180,  180,  180,    0,  180,    0,  180,  180,    0,  180,
    0,  180,  180,  180,  180,  180,  180,    0,  180,  180,
  180,    0,    0,  180,    0,    0,    0,  180,  180,  180,
  180,  180,    0,    0,    0,    0,  180,    0,    0,    0,
  180,  180,    0,    0,  180,    0,    0,  180,  180,    0,
  180,    0,  180,  180,  180,    0,  180,    0,    0,    0,
  180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
  180,  180,    0,    0,  181,    0,    0,  181,  181,  181,
  105,    0,    0,  181,    0,  181,    0,    0,  181,    0,
    0,  181,  181,  181,    0,  181,    0,  181,  181,    0,
  181,    0,  181,  181,  181,  181,  181,  181,    0,  181,
  181,  181,    0,    0,  181,    0,    0,    0,  181,  181,
  181,  181,  181,    0,    0,    0,    0,  181,    0,    0,
    0,  181,  181,    0,    0,  181,    0,    0,  181,  181,
    0,  181,    0,  181,  181,  181,    0,  181,    0,    0,
    0,  181,  181,  181,  181,  181,  181,  181,  181,  181,
  181,  181,  181,  109,    0,    0,  109,  109,  109,  106,
    0,    0,  109,    0,  109,    0,    0,  109,    0,    0,
  109,  109,  109,    0,  109,    0,  109,  109,    0,  109,
    0,  109,  109,  109,  109,  109,  109,    0,  109,  109,
  109,    0,    0,  109,    0,    0,    0,  109,  109,  109,
  109,  109,    0,    0,    0,    0,  109,    0,    0,    0,
  109,  109,    0,    0,  109,    0,    0,  109,  109,    0,
  109,    0,  109,    0,  109,    0,  109,    0,    0,    0,
  109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  109,  109,  108,    0,    0,  108,  108,  108,  107,    0,
    0,  108,    0,  108,    0,    0,  108,    0,    0,  108,
  108,  108,    0,  108,    0,  108,  108,    0,  108,    0,
  108,  108,  108,  108,  108,  108,    0,  108,  108,  108,
    0,    0,  108,    0,    0,    0,  108,  108,  108,  108,
  108,    0,    0,    0,    0,  108,    0,    0,    0,  108,
  108,    0,    0,  108,    0,    0,  108,  108,    0,  108,
    0,  108,    0,  108,    0,  108,    0,    0,    0,  108,
  108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
  108,    0,  105,    0,    0,  105,  105,  105,  103,    0,
    0,  105,    0,  105,    0,    0,  105,    0,    0,  105,
  105,  105,    0,  105,    0,  105,  105,    0,  105,    0,
  105,  105,  105,  105,  105,  105,    0,  105,  105,  105,
    0,    0,  105,    0,    0,    0,  105,  105,  105,  105,
  105,    0,    0,    0,    0,  105,    0,    0,    0,  105,
  105,    0,    0,  105,    0,    0,  105,  105,    0,  105,
    0,  105,    0,  105,    0,  105,    0,    0,    0,  105,
  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
  105,  106,    0,    0,  106,  106,  106,  104,    0,    0,
  106,    0,  106,    0,    0,  106,    0,    0,  106,  106,
  106,    0,  106,    0,  106,  106,    0,  106,    0,  106,
  106,  106,  106,  106,  106,    0,  106,  106,  106,    0,
    0,  106,    0,    0,    0,  106,  106,  106,  106,  106,
    0,    0,    0,    0,  106,    0,    0,    0,  106,  106,
    0,    0,  106,    0,    0,  106,  106,    0,  106,    0,
  106,    0,  106,    0,  106,    0,    0,    0,  106,  106,
  106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
  107,    0,    0,  107,  107,  107,  113,    0,    0,  107,
    0,  107,    0,    0,  107,    0,    0,  107,  107,  107,
    0,  107,    0,  107,  107,    0,  107,    0,  107,  107,
  107,  107,  107,  107,   36,  107,  107,  107,    0,    0,
  107,    0,    0,    0,  107,  107,  107,  107,  107,    0,
    0,    0,    0,  107,    0,    0,    0,  107,  107,    0,
    0,  107,    0,    0,  107,  107,    0,  107,    0,  107,
    0,  107,    0,  107,    0,    0,    0,  107,  107,  107,
  107,  107,  107,  107,  107,  107,  107,  107,  107,    0,
  103,  114,    0,  103,  103,  103,    0,    0,    0,  103,
    0,  103,    0,    0,  103,    0,    0,  103,  103,  103,
    0,  103,    0,  103,  103,    0,  103,    0,  103,  103,
  103,  103,  103,  103,    0,  103,  103,  103,    0,    0,
  103,    0,    0,    0,  103,  103,  103,  103,  103,    0,
    0,    0,    0,  103,    0,    0,    0,  103,  103,    0,
    0,  103,    0,    0,  103,  103,    0,  103,    0,  103,
    0,  103,    0,  103,    0,    0,    0,  103,  103,  103,
    0,    0,    0,  103,  103,  103,  103,  103,  103,  104,
  111,    0,  104,  104,  104,    0,    0,    0,  104,    0,
  104,    0,    0,  104,    0,    0,  104,  104,  104,    0,
  104,    0,  104,  104,    0,  104,    0,  104,  104,  104,
  104,  104,  104,    0,  104,  104,  104,    0,    0,  104,
    0,    0,    0,  104,  104,  104,  104,  104,    0,    0,
    0,    0,  104,    0,    0,    0,  104,  104,    0,    0,
  104,    0,    0,  104,  104,    0,  104,    0,  104,    0,
  104,    0,  104,    0,    0,    0,  104,  104,  104,    0,
    0,    0,  104,  104,  104,  104,  104,  104,  113,  112,
    0,  113,  113,  113,    0,    0,    0,  113,    0,  113,
    0,    0,  113,    0,    0,  113,  113,  113,    0,  113,
    0,  113,  113,    0,  113,    0,  113,  113,  113,  113,
  113,  113,    0,  113,  113,  113,    0,    0,  113,    0,
    0,    0,  113,  113,  113,  113,  113,    0,    0,    0,
    0,  113,   36,    0,   36,  113,  113,    0,    0,  113,
    0,    0,  113,  113,    0,  113,    0,  113,    0,  113,
    0,  113,   36,    0,    0,  113,    0,    0,    0,    0,
    0,  113,  113,  114,    0,    0,  114,  114,  114,    1,
    0,   36,  114,    0,  114,   36,    0,  114,    0,   36,
  114,  114,  114,    0,  114,    0,  114,  114,    0,  114,
    0,  114,  114,  114,  114,  114,  114,    0,  114,  114,
  114,    0,    0,  114,    0,    0,    0,  114,  114,  114,
  114,  114,    0,    0,    0,    0,  114,    0,    0,    0,
  114,  114,    0,    0,  114,    0,   43,  114,  114,    0,
  114,    0,  114,    0,  114,  115,  114,    0,    0,   43,
  114,    0,    0,    0,    0,   43,  114,  114,   43,    0,
   43,    0,  111,    0,    0,  111,  111,  111,    0,    0,
    0,  111,   43,  111,    0,    0,  111,    0,   43,  111,
  111,  111,    0,  111,    0,  111,  111,    0,  111,    0,
  111,  111,  111,  111,  111,  111,    0,  111,  111,  111,
    0,    0,  111,    0,    0,    0,  111,  111,  111,  111,
  111,    0,    0,    0,    0,  111,  150,    0,    0,  111,
  111,    0,    0,  111,    0,    0,  111,  111,    0,  111,
    0,  111,    0,  111,    0,  111,    0,    0,    0,  111,
    0,    0,    0,    0,    0,  111,  111,    0,    0,    0,
    0,  112,    0,    0,  112,  112,  112,    0,    0,    0,
  112,    0,  112,    0,    0,  112,    0,    0,  112,  112,
  112,    0,  112,    0,  112,  112,    0,  112,    0,  112,
  112,  112,  112,  112,  112,    0,  112,  112,  112,    0,
    0,  112,  151,    0,    0,  112,  112,  112,  112,  112,
    0,    0,    0,    0,  112,    0,    0,    0,  112,  112,
    0,    0,  112,    0,    0,  112,  112,    0,  112,    0,
  112,    0,  112,    0,  112,    0,    0,    0,  112,    0,
    0,    0,    0,    0,  112,  112,    4,    4,    4,    4,
    0,    0,    4,    0,    0,    0,    0,    0,    4,    4,
    0,    0,    0,    4,    4,    0,    0,    4,    0,    0,
    0,    4,  108,    4,    0,    0,    4,  110,    4,    0,
  110,  111,  112,  113,  114,    4,    0,    0,    0,    4,
    4,    4,    4,    0,    4,    0,    0,    0,    0,    0,
    0,    0,    4,    0,    0,    4,    4,    4,    0,    0,
    0,    4,    0,    0,    0,    0,    0,  115,    0,    0,
  115,  115,  115,    4,    0,    0,  115,    4,  115,    4,
    4,  115,    0,    0,  115,  115,  115,    0,  115,    0,
  115,  115,    0,  115,    0,  115,  115,  115,  115,  115,
  115,    0,  115,  115,  115,  116,    0,  115,    0,    0,
    0,  115,  115,  115,  115,  115,    0,    0,    0,    0,
  115,    0,    0,    0,  115,  115,    0,    0,  115,    0,
    0,  115,  115,    0,  115,    0,  115,    0,  150,    0,
  115,  150,  150,  150,  115,    0,    0,  150,    0,  150,
    0,    0,  150,    0,    0,  150,  150,  150,    0,  150,
    0,  150,  150,    0,  150,    0,  150,  150,  150,  150,
  150,  150,    0,  150,  150,  150,  117,    0,  150,    0,
    0,    0,  150,  150,  150,  150,  150,    0,    0,    0,
    0,  150,    0,    0,    0,  150,  150,    0,    0,  150,
    0,    0,  150,  150,    0,  150,    0,  150,    0,    0,
    0,  150,    0,    0,  151,  150,    0,  151,  151,  151,
    0,    0,    0,  151,    0,  151,    0,    0,  151,    0,
    0,  151,  151,  151,    0,  151,    0,  151,  151,    0,
  151,    0,  151,  151,  151,  151,  151,  151,    0,  151,
  151,  151,  118,    0,  151,    0,    0,    0,  151,  151,
  151,  151,  151,    0,    0,    0,    0,  151,    0,    0,
    0,  151,  151,    0,    0,  151,    0,    0,  151,  151,
    0,  151,    0,  151,    0,    0,    0,  151,    0,  110,
    0,  151,  110,  110,  110,    0,    0,    0,  110,    0,
  110,    0,    0,  110,    0,    0,  110,  110,  110,    0,
  110,    0,  110,  110,    0,  110,    0,  110,  110,  110,
  110,  110,  110,  119,  110,  110,  110,    0,    0,  110,
    0,    0,    0,  110,  110,  110,  110,  110,    0,    0,
    0,    0,  110,    0,    0,    0,  110,  110,    0,    0,
  110,    0,    0,  110,  110,    0,  110,    0,  110,    0,
    0,    0,  110,    0,    0,    0,  110,  116,    0,    0,
  116,  116,  116,    0,    0,    0,  116,    0,  116,    0,
    0,  116,    0,    0,  116,  116,  116,    0,  116,    0,
  116,  116,    0,  116,  140,  116,  116,  116,    0,  116,
  116,    0,  116,  116,  116,    0,    0,  116,    0,    0,
    0,  116,  116,  116,  116,  116,    0,    0,    0,    0,
  116,    0,    0,    0,  116,  116,    0,    0,  116,    0,
    0,  116,  116,    0,  116,    0,  116,    0,  117,    0,
  116,  117,  117,  117,  116,    0,    0,  117,    0,  117,
    0,    0,  117,    0,    0,  117,  117,  117,    0,  117,
    0,  117,  117,    0,  117,  141,  117,  117,  117,    0,
  117,  117,    0,  117,  117,  117,    0,    0,  117,    0,
    0,    0,  117,  117,  117,  117,  117,    0,    0,    0,
    0,  117,    0,    0,    0,  117,  117,    0,    0,  117,
    0,    0,  117,  117,    0,  117,    0,  117,    0,    0,
    0,  117,    0,    0,  118,  117,    0,  118,  118,  118,
    0,    0,    0,  118,    0,  118,    0,    0,  118,    0,
    0,  118,  118,  118,    0,  118,  120,  118,  118,    0,
  118,    0,  118,  118,  118,    0,  118,  118,    0,  118,
  118,  118,    0,    0,  118,    0,    0,    0,  118,  118,
  118,  118,  118,    0,    0,    0,    0,  118,    0,    0,
    0,  118,  118,    0,    0,    0,    0,    0,  118,  118,
    0,  118,    0,  118,    0,  119,    0,  118,  119,  119,
  119,  118,    0,    0,  119,    0,  119,    0,    0,  119,
    0,    0,  119,  119,    0,    0,  119,  138,  119,  119,
    0,  119,    0,  119,  119,  119,    0,  119,  119,    0,
  119,  119,  119,    0,    0,  119,    0,    0,    0,  119,
  119,  119,  119,  119,    0,    0,    0,    0,  119,    0,
    0,    0,  119,  119,    0,    0,    0,    0,    0,  119,
  119,    0,  119,    0,  119,    0,  140,    0,  119,  140,
  140,  140,  119,    0,    0,  140,    0,  140,    0,    0,
  140,    0,    0,  140,  140,    0,    0,  140,  121,  140,
  140,    0,  140,    0,  140,  140,  140,    0,  140,  140,
    0,  140,  140,  140,    0,    0,  140,    0,    0,    0,
  140,  140,  140,  140,    0,    0,    0,    0,    0,  140,
    0,    0,    0,  140,  140,    0,    0,    0,    0,    0,
  140,  140,    0,  140,    0,  140,    0,  141,    0,  140,
  141,  141,  141,  140,    0,    0,  141,    0,  141,    0,
    0,  141,    0,    0,  141,  141,    0,    0,  141,  139,
  141,  141,    0,  141,    0,  141,  141,  141,    0,  141,
  141,    0,  141,  141,  141,    0,    0,  141,    0,    0,
    0,  141,  141,  141,  141,    0,    0,    0,    0,    0,
  141,    0,    0,    0,  141,  141,    0,    0,    0,    0,
    0,  141,  141,    0,  141,    0,  141,    0,  120,    0,
  141,  120,  120,  120,  141,    0,    0,  120,    0,  120,
    0,    0,  120,    0,    0,  120,  120,    0,    0,  120,
  145,  120,  120,    0,  120,    0,  120,    0,  120,    0,
  120,  120,    0,  120,    0,  120,    0,    0,  120,    0,
    0,    0,  120,  120,  120,  120,    0,    0,    0,    0,
    0,  120,    0,    0,    0,  120,  120,    0,    0,    0,
    0,    0,  120,  120,    0,  120,    0,  120,    0,  138,
    0,  120,  138,  138,  138,  120,    0,    0,  138,    0,
  138,    0,    0,  138,    0,    0,  138,  138,    0,    0,
    0,  146,  138,  138,    0,  138,    0,  138,  138,  138,
    0,  138,  138,    0,  138,    0,  138,    0,    0,  138,
    0,    0,    0,  138,  138,  138,  138,    0,    0,    0,
    0,    0,  138,    0,    0,    0,  138,  138,    0,    0,
    0,    0,    0,  138,  138,    0,  138,    0,  138,    0,
  121,    0,  138,  121,  121,  121,  138,    0,    0,  121,
    0,  121,    0,    0,  121,    0,    0,  121,  121,    0,
    0,  121,  142,  121,  121,    0,  121,    0,  121,    0,
  121,    0,  121,  121,    0,  121,    0,  121,    0,    0,
  121,    0,    0,    0,  121,  121,  121,  121,    0,    0,
    0,    0,    0,  121,    0,    0,    0,  121,  121,    0,
    0,    0,    0,    0,  121,  121,    0,  121,    0,  121,
    0,  139,    0,  121,  139,  139,  139,  121,    0,    0,
  139,    0,  139,    0,    0,  139,    0,    0,  139,  139,
    0,    0,    0,  143,  139,  139,    0,  139,    0,  139,
  139,  139,    0,  139,  139,    0,  139,    0,  139,    0,
    0,  139,    0,    0,    0,  139,  139,  139,  139,    0,
    0,    0,    0,    0,  139,    0,    0,    0,  139,  139,
    0,    0,    0,    0,    0,  139,  139,    0,  139,    0,
  139,    0,  145,    0,  139,  145,  145,    0,  139,    0,
  144,  145,    0,  145,    0,    0,  145,    0,    0,  145,
  145,    0,    0,  145,    0,  145,  145,    0,  145,    0,
  145,    0,  145,    0,    0,  145,    0,  145,    0,  145,
    0,    0,    0,    0,    0,    0,  145,  145,  145,  145,
    0,    0,    0,    0,    0,  145,    0,    0,   44,  145,
  145,    0,    0,    0,    0,    0,  145,  145,    0,  145,
    0,  145,    0,  146,    0,  145,  146,  146,    0,  145,
    0,    0,  146,    0,  146,    0,    0,  146,    0,    0,
  146,  146,    0,    0,  146,    0,  146,  146,    0,  146,
    0,  146,    0,  146,    0,    0,  146,    0,  146,    0,
  146,    0,    0,    0,    0,    0,    0,  146,  146,  146,
  146,    0,    0,    0,    0,    0,  146,    0,    0,    0,
  146,  146,    0,    0,    0,    0,    0,  146,  146,    0,
  146,    0,  146,    0,  142,    0,  146,  142,  142,    0,
  146,    0,    0,  142,    0,  142,    0,    0,  142,    0,
    0,  142,  142,    0,    0,  142,    0,  142,  142,    0,
  142,    0,  142,    0,  142,    0,    0,  142,    0,  142,
    0,  142,    0,    0,    0,    0,    0,    0,  142,  142,
  142,  142,    0,    0,    0,    0,    0,  142,    0,    0,
    0,  142,  142,    0,    0,    0,    0,    0,  142,  142,
    0,  142,    0,  142,    0,  143,    0,  142,  143,  143,
    0,  142,    0,    0,  143,    0,  143,    0,    0,  143,
    0,    0,  143,  143,    0,    0,  143,    0,  143,  143,
    0,  143,    0,  143,    0,  143,    0,    0,  143,    0,
  143,    0,  143,    0,    0,    0,    0,    0,    0,  143,
  143,  143,  143,    0,    0,    0,    0,    0,  143,    0,
    0,    0,  143,  143,    0,  144,  144,    0,    0,  143,
  143,  144,  143,  144,  143,    0,  144,    0,  143,  144,
  144,    0,  143,  144,    0,  144,  144,    0,  144,    0,
  144,    0,  144,    0,    0,  144,    0,  144,    0,  144,
    0,    0,    0,    0,    0,    0,  144,  144,  144,  144,
    0,    0,    0,    0,    0,  144,    0,    0,    0,  144,
  144,   44,    0,    0,    0,    0,  144,  144,    0,  144,
    0,  144,    0,    0,   44,  144,   44,    0,   44,  144,
   44,    0,    0,   44,    0,   44,   99,    0,    0,    0,
    0,    0,    0,    0,    0,   97,   44,   44,  101,  411,
   98,    0,    0,   44,  412,    0,    0,    0,    0,  413,
    0,    0,    0,    0,   99,   44,    0,   44,    0,   44,
    0,    0,    0,   44,  100,    0,  101,  102,  107,    0,
    0,  103,    0,    0,    0,  104,    0,  108,  109,    0,
  105,    0,    0,  106,    0,  110,  111,  112,  113,  114,
  115,  116,  117,  118,  119,  120,  107,    0,   99,    0,
  238,    0,    0,    0,    0,  108,  109,   97,    0,    0,
  101,    0,   98,  110,  111,  112,  113,  114,  115,  116,
  117,  118,  119,  120,    0,    0,   99,  106,    0,    0,
    0,    0,    0,    0,    0,    0,  100,    0,  101,  102,
  107,    0,    0,  103,    0,    0,    0,  104,    0,  108,
  109,    0,  105,    0,    0,  106,    0,  110,  111,  112,
  113,  114,  115,  116,  117,  118,  119,  120,  107,    0,
    0,    0,    0,    0,  310,    0,    0,  108,  109,   97,
  311,    0,    0,    0,   98,  110,  111,  112,  113,  114,
  115,  116,  117,  118,  119,  120,    0,    0,   99,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  100,    0,
  101,  102,    0,    0,    0,  103,    0,    0,    0,  104,
    0,    0,    0,    0,  105,    0,    0,  106,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  198,    0,    0,
  107,    0,    0,    0,    0,    0,    0,    0,    0,  108,
  109,   97,    0,    0,  202,    0,   98,  110,  111,  112,
  113,  114,  115,  116,  117,  118,  119,  120,    0,    0,
   99,    0,    0,    0,    0,    0,    0,    0,    0,   97,
  100,    0,  101,  102,   98,    0,    0,  103,    0,    0,
    0,  104,    0,    0,    0,    0,  105,    0,   99,  106,
    0,    0,    0,    0,    0,    0,    0,    0,  100,    0,
  101,  102,  107,    0,    0,  103,    0,    0,    0,  104,
    0,  108,  109,    0,  105,    0,    0,  106,    0,  110,
  111,  112,  113,  114,  115,  116,  117,  118,  119,  120,
  107,    0,    0,    0,    0,    0,  203,    0,    0,  108,
  109,   97,    0,    0,    0,    0,   98,  110,  111,  112,
  113,  114,  115,  116,  117,  118,  119,  120,    0,    0,
   99,    0,    0,    0,    0,    0,    0,    0,    0,   97,
  100,    0,  101,  102,   98,    0,    0,  103,    0,    0,
    0,  104,    0,    0,    0,    0,  105,    0,   99,  106,
    0,    0,    0,    0,    0,    0,    0,    0,  100,    0,
  101,  102,  107,    0,    0,  103,    0,    0,  211,  104,
    0,  108,  109,    0,  105,    0,    0,  106,    0,  110,
  111,  112,  113,  114,  115,  116,  117,  118,  119,  120,
  107,    0,    0,    0,    0,    0,  212,    0,    0,  108,
  109,   97,    0,  101,  214,    0,   98,  110,  111,  112,
  113,  114,  115,  116,  117,  118,  119,  120,    0,    0,
   99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  100,    0,  101,  102,    0,    0,    0,  103,    0,    0,
    0,  104,  108,  109,    0,    0,  105,    0,    0,  106,
  110,  111,  112,  113,  114,  115,  116,  117,  118,  119,
  120,    0,  107,    0,    0,    0,    0,    0,    0,    0,
    0,  108,  109,   97,    0,    0,  218,    0,   98,  110,
  111,  112,  113,  114,  115,  116,  117,  118,  119,  120,
    0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  100,    0,  101,  102,    0,    0,    0,  103,
    0,    0,    0,  104,  108,  109,    0,    0,  105,    0,
    0,  106,  110,  111,  112,  113,  114,  115,  116,  117,
  118,  119,  120,    0,  107,    0,    0,    0,    0,    0,
    0,    0,    0,  108,  109,   97,    0,    0,    0,    0,
   98,  110,  111,  112,  113,  114,  115,  116,  117,  118,
  119,  120,    0,    0,   99,    0,    0,    0,    0,    0,
    0,    0,    0,   97,  100,    0,  101,  102,   98,    0,
    0,  103,    0,    0,    0,  104,    0,    0,    0,    0,
  105,    0,   99,  106,    0,    0,    0,    0,    0,    0,
    0,    0,  100,  249,  101,  102,  107,    0,    0,  103,
    0,    0,    0,  104,    0,  108,  109,    0,  105,    0,
    0,  106,    0,  110,  111,  112,  113,  114,  115,  116,
  117,  118,  119,  120,  107,    0,    0,    0,    0,    0,
  410,    0,    0,  108,  109,   97,    0,    0,    0,    0,
   98,  110,  111,  112,  113,  114,  115,  116,  117,  118,
  119,  120,    0,    0,   99,    0,    0,    0,    0,    0,
    0,    0,    0,   88,  100,    0,  101,  102,   88,    0,
    0,  103,    0,    0,    0,  104,    0,    0,    0,    0,
  105,    0,   88,  106,    0,    0,    0,    0,    0,    0,
    0,    0,   88,    0,   88,   88,  107,    0,    0,   88,
    0,    0,    0,   88,    0,  108,  109,    0,   88,    0,
    0,   88,    0,  110,  111,  112,  113,  114,  115,  116,
  117,  118,  119,  120,   88,    0,    0,    0,    0,    0,
    0,    0,    0,   88,   88,   90,    0,    0,    0,    0,
   90,   88,   88,   88,   88,   88,   88,   88,   88,   88,
   88,   88,    0,    0,   90,    0,    0,    0,    0,    0,
    0,    0,    0,  148,   90,    0,   90,   90,  148,    0,
    0,   90,    0,    0,    0,   90,    0,    0,    0,    0,
   90,    0,  148,   90,    0,    0,    0,    0,    0,    0,
    0,    0,  148,    0,  148,  148,   90,    0,    0,  148,
    0,    0,    0,  148,    0,   90,   90,    0,  148,    0,
    0,  148,    0,   90,   90,   90,   90,   90,   90,   90,
   90,   90,   90,   90,  148,    0,   99,    0,  291,    0,
    0,    0,    0,  148,  148,   97,    0,    0,  101,    0,
   98,  148,  148,  148,  148,  148,  148,  148,  148,  148,
  148,  148,    0,    0,   99,  106,    0,    0,    0,    0,
    0,    0,    0,    0,  100,    0,  101,  102,  107,    0,
    0,  103,    0,    0,    0,  104,    0,  108,  109,    0,
    0,    0,    0,  106,    0,  110,  111,  112,  113,  114,
  115,  116,  117,  118,  119,  120,  107,    0,    0,    0,
    0,    0,    0,    0,    0,  108,  109,    0,    0,    0,
    0,    0,    0,  110,  111,  112,  113,  114,  115,  116,
  117,  118,  119,  120,   27,   27,   27,   27,   27,    0,
   27,    0,    0,    0,    0,    0,   27,   27,    0,    0,
    0,   27,   27,    0,   27,   27,    0,    0,    0,   27,
    0,   27,    0,    0,    0,    0,   27,    0,    0,    0,
    0,    0,    0,   27,    0,    0,    0,   27,   27,   27,
   27,    0,   27,    0,    0,    0,    0,    0,    0,    0,
   27,    0,    0,   27,    0,   27,    0,    0,   27,   27,
    0,    0,   29,    0,    0,    0,    0,    5,    5,    5,
    5,   27,    0,    5,    0,   27,    0,   27,   27,    5,
    5,    0,    0,    0,    5,    5,    0,    0,    5,    0,
    0,    0,    5,    0,    5,    0,    0,    5,    0,    5,
    0,    0,    0,    0,    0,    0,    5,    0,    0,    0,
    5,    5,    5,    5,    0,    5,    0,    0,    0,    0,
    0,    0,    0,    5,    0,    0,    5,    5,    5,    0,
    0,    0,    5,    0,    0,    0,    0,    0,    0,    0,
    7,    8,    9,   10,    5,    0,   11,    0,    5,    0,
    5,    5,   12,   13,    0,    0,    0,   14,   15,    0,
    0,   16,    0,    0,    0,   17,    0,   18,    0,    0,
    0,    0,   19,    0,    0,    0,    0,    0,    0,   20,
    0,    0,    0,   21,   22,   23,   24,    0,   25,    0,
    0,    0,    0,    0,    0,    0,   26,    0,  108,   27,
   83,   28,    0,    0,    0,   29,  110,  111,  112,  113,
  114,    0,    0,  117,  118,  119,  120,   30,    0,    0,
    0,   31,    0,   32,   33,    7,    8,    9,   10,  176,
    0,   11,    0,    0,    0,    0,    0,   12,   13,    0,
    0,    0,   14,   15,    0,    0,   16,    0,    0,    0,
   17,    0,   18,    0,    0,    0,    0,   19,    0,    0,
    0,    0,    0,    0,   20,    0,    0,    0,   21,   22,
   23,   24,    0,   25,    0,    0,    0,    0,    0,    0,
    0,   26,    0,    0,   27,    0,   28,    0,    0,    0,
   29,    0,    0,    0,    0,    0,    0,    0,    7,    8,
    9,   10,   30,    0,   11,    0,   31,    0,   32,   33,
   12,   13,    0,    0,    0,   14,   15,    0,    0,   16,
    0,    0,    0,   17,    0,   18,    0,    0,    0,    0,
   19,    0,    0,    0,    0,    0,    0,   20,    0,    0,
    0,   21,   22,   23,   24,    0,   25,    0,    0,    0,
    0,    0,    0,    0,   26,    0,    0,   27,   83,   28,
    0,    0,    0,   29,    0,    0,    0,    0,    0,    0,
    0,    7,    8,    9,   10,  221,    0,   11,    0,   31,
    0,   32,   33,   12,   13,    0,    0,    0,   14,   15,
    0,    0,   16,    0,    0,    0,   17,    0,   18,    0,
    0,    0,    0,   19,    0,    0,    0,    0,    0,    0,
   20,    0,    0,    0,   21,   22,   23,   24,    0,   25,
    0,    0,    0,    0,    0,    0,    0,   26,    0,    0,
   27,    0,   28,    0,    0,    0,   29,    0,    0,    0,
    0,    0,    0,    0,    7,    8,    9,   10,   30,  355,
   11,    0,   31,    0,   32,   33,   12,   13,    0,    0,
    0,   14,   15,    0,    0,   16,    0,    0,    0,   17,
    0,   18,    0,    0,    0,    0,   19,    0,    0,    0,
    0,    0,    0,   20,    0,    0,    0,   21,   22,   23,
   24,    0,   25,    0,    0,    0,    0,    0,    0,    0,
   26,    0,    0,   27,    0,   28,    0,    0,    0,   29,
    0,    0,    0,    0,    0,    0,    0,   12,   12,   12,
   12,   30,  358,   12,    0,   31,    0,   32,   33,   12,
   12,    0,    0,    0,   12,   12,    0,    0,   12,    0,
    0,    0,   12,    0,   12,    0,    0,    0,    0,   12,
    0,    0,    0,    0,    0,    0,   12,    0,    0,    0,
   12,   12,   12,   12,    0,   12,    0,    0,    0,    0,
    0,    0,    0,   12,    0,    0,   12,   12,   12,    0,
    0,    0,   12,    0,    0,    0,    0,    0,    0,    0,
   13,   13,   13,   13,   12,    0,   13,    0,   12,    0,
   12,   12,   13,   13,    0,    0,    0,   13,   13,    0,
    0,   13,    0,    0,    0,   13,    0,   13,    0,    0,
    0,    0,   13,    0,    0,    0,    0,    0,    0,   13,
    0,    0,    0,   13,   13,   13,   13,    0,   13,    0,
    0,    0,    0,    0,    0,    0,   13,    0,    0,   13,
   13,   13,    0,    0,    0,   13,    0,    0,    0,    0,
    0,    0,    0,   31,   31,   31,   31,   13,    0,   31,
    0,   13,    0,   13,   13,   31,   31,    0,    0,    0,
   31,   31,    0,    0,   31,    0,    0,    0,   31,    0,
   31,    0,    0,    0,    0,   31,    0,    0,    0,    0,
    0,    0,   31,    0,    0,    0,   31,   31,   31,   31,
    0,   31,    0,    0,    0,    0,    0,    0,    0,   31,
    0,    0,   31,   31,   31,    0,    0,    0,   31,    0,
    0,    0,    0,    0,    0,    0,   31,   31,   31,   31,
   31,    0,   31,    0,   31,    0,   31,   31,   31,   31,
    0,    0,    0,   31,   31,    0,    0,   31,    0,    0,
    0,   31,    0,   31,    0,    0,    0,    0,   31,    0,
    0,    0,    0,    0,    0,   31,    0,    0,    0,   31,
   31,   31,   31,    0,   31,    0,    0,    0,    0,    0,
    0,    0,   31,    0,    0,   31,    0,   31,    0,    0,
   31,   31,    0,    0,    0,    0,    0,    0,    0,    7,
    8,    9,   10,   31,    0,   11,    0,   31,    0,   31,
   31,   12,   13,    0,    0,    0,   14,   15,    0,    0,
   16,    0,    0,    0,   17,    0,   18,    0,    0,    0,
    0,   19,    0,    0,    0,    0,    0,    0,   20,    0,
    0,    0,   21,   22,   23,   24,    0,   25,    0,    0,
    0,    0,    0,    0,    0,   26,    0,    0,   27,    0,
   28,    0,    0,    0,   29,    0,    0,    0,    0,    0,
    0,    0,    7,    8,    9,   10,   30,    0,   11,    0,
   31,    0,   32,   33,   12,   13,    0,    0,    0,   14,
   15,    0,    0,   16,    0,    0,    0,   17,    0,   18,
    0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
    0,   20,    0,    0,    0,   21,   22,   23,   24,    0,
   25,    0,    0,    0,    0,    0,    0,    0,   26,    0,
    0,   27,    0,   28,    0,    0,    0,   29,    0,    0,
    0,    0,    0,    0,    0,   34,   34,   34,   34,  221,
    0,   34,    0,   31,    0,   32,   33,   34,   34,    0,
    0,    0,   34,   34,    0,    0,   34,    0,    0,    0,
   34,    0,   34,    0,    0,    0,    0,   34,    0,    0,
    0,    0,    0,    0,   34,    0,    0,    0,   34,   34,
   34,   34,    0,   34,    0,    0,    0,    0,    0,    0,
    0,   34,    0,    0,   34,    0,   34,    0,    0,    0,
   34,    0,    0,    0,    0,    0,    0,    0,   56,   56,
   56,   56,   34,    0,   56,    0,   34,    0,   34,   34,
   56,   56,    0,    0,    0,   56,   56,    0,    0,   56,
    0,   98,    0,   56,    0,   56,    0,    0,    0,    0,
   56,    0,    0,    0,    0,   99,    0,   56,    0,    0,
    0,   56,   56,   56,   56,  100,   56,  101,  102,    0,
    0,    0,  103,    0,   56,    0,  104,   56,    0,   56,
    0,  105,    0,   56,  106,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   56,    0,  107,    0,   56,
    0,   56,   56,    0,    0,    0,  108,  109,    0,    0,
    0,   98,    0,    0,  110,  111,  112,  113,  114,  115,
  116,  117,  118,  119,  120,   99,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,  101,  102,    0,
    0,    0,  103,    0,    0,    0,  104,    0,    0,    0,
    0,    0,    0,   99,  106,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  101,    0,  107,    0,    0,
  103,    0,    0,    0,    0,    0,  108,  109,    0,    0,
    0,    0,  106,    0,  110,  111,  112,  113,  114,  115,
  116,  117,  118,  119,  120,  107,   99,    0,    0,    0,
    0,    0,    0,    0,  108,  109,    0,    0,  101,    0,
    0,    0,  110,  111,  112,  113,  114,  115,  116,  117,
  118,  119,  120,    0,    0,  106,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  101,    0,  107,    0,
    0,    0,    0,    0,    0,    0,    0,  108,  109,    0,
    0,    0,    0,    0,    0,  110,  111,  112,  113,  114,
  115,  116,  117,  118,  119,  120,  107,    0,    0,    0,
    0,    0,    0,    0,    0,  108,  109,    0,    0,    0,
    0,    0,    0,  110,  111,  112,  113,  114,  115,  116,
  117,  118,  119,  120,
};
static short [] yycheck = {                          1,
  257,  258,  324,  258,   72,  263,   93,  350,   95,   57,
    0,  221,  258,   61,  264,  257,  258,  287,   66,   67,
   68,   69,  295,   71,  334,   80,    1,    0,  261,  295,
    0,   79,    0,   81,  261,  261,  309,  329,    0,  382,
  257,  258,  319,  309,  277,  295,  295,  339,   23,  334,
  277,  277,  329,   55,  326,  272,   31,   32,   33,  269,
  309,  319,  257,  258,  151,    0,  266,  277,  278,  311,
    0,  279,  280,  257,  258,    0,  276,  335,  335,  334,
  267,    0,    0,    0,    0,  257,  258,   62,  334,   64,
   65,  159,  140,  161,    0,    0,  313,   72,   73,  316,
    0,    0,  335,   78,  291,   80,  108,   82,  335,  279,
  280,  298,  279,  280,  329,  329,  311,  332,  326,  331,
  335,  335,   97,   98,   99,  100,  101,  311,  103,  334,
  105,  106,  107,  220,  109,  110,  111,  112,  113,  114,
  115,  116,  117,  118,  119,  120,  121,  122,  331,  331,
  262,  334,  334,  128,  332,  130,  326,  334,  202,  326,
  215,  303,  304,  273,  342,  343,  344,  211,  212,  329,
  332,  334,    0,  335,  218,  335,  286,  329,  334,  154,
  332,  156,  292,  335,  159,  295,  161,  297,  159,  329,
  161,  193,  332,  237,    0,  335,  171,  172,  173,  309,
  202,  176,  334,  332,  332,  315,  335,  335,  263,  211,
  212,  329,  214,  257,  273,  334,  218,  335,  329,  332,
  329,  339,  335,  198,  335,  335,  335,  286,  203,  332,
  339,  332,  335,  292,  335,  237,  295,  305,  297,  334,
  215,  309,  244,  287,  288,  329,  221,  329,  332,  334,
  309,  335,  227,  335,  302,  257,  315,  273,  334,  329,
  334,    0,  329,  238,  319,  335,  310,  329,  335,  317,
  286,  329,  329,  335,  249,  262,  292,  335,  335,  295,
  335,  297,  334,  329,  329,  287,  288,  334,  263,  335,
  335,  334,  332,  309,  269,  335,  334,  334,  300,  315,
  273,  345,  277,  278,  306,  334,  285,  351,  310,  299,
  312,  332,  285,  286,  335,  288,  291,  290,  288,  292,
  290,  335,  295,  332,  297,  331,  288,  334,  290,  319,
  305,  335,  280,  306,  309,  308,  309,  335,  308,  329,
  308,  331,  315,  345,  319,  335,  308,  335,  350,  351,
  352,    0,  335,  335,  327,  273,  329,  327,  331,  329,
  335,  331,  335,  331,  299,  335,  410,  335,  286,  331,
  288,  290,  290,  335,  292,  335,  335,  295,  308,  297,
  382,  335,  288,  288,  290,  290,  325,  389,  306,  308,
  308,  309,  334,  368,  327,  370,  331,  315,  400,  299,
  335,  331,  308,  308,  332,  335,  331,  335,  410,  327,
  335,  329,  331,  331,  331,  331,  335,  335,  335,  335,
  395,  327,  424,  329,  265,  331,  331,  429,  403,  335,
  335,  331,  331,  335,  262,  335,  335,  265,  266,  267,
  415,  416,    0,  271,  321,  273,  332,  422,  276,  335,
  329,  279,  280,  281,  288,  283,  334,  285,  286,  335,
  288,  335,  290,  291,  292,  293,  294,  295,  334,  297,
  298,  299,  334,  295,  302,  302,  303,  304,  306,  307,
  308,  309,  310,  335,  290,  335,  264,  315,  284,  285,
  286,  319,  320,  268,  334,  323,  290,  328,  326,  327,
  332,  329,  308,  331,  332,  333,  329,  335,  334,  334,
  295,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  262,  295,  331,  265,  266,  267,  335,
  295,    0,  271,  306,  273,  314,  308,  276,  335,  268,
  279,  280,  281,  335,  283,  334,  285,  286,  335,  288,
  257,  290,  291,  292,  293,  294,  295,  299,  297,  298,
  299,  335,    0,  302,  262,  335,  280,  306,  307,  308,
  309,  310,  262,  285,  285,    5,  315,    1,    1,   58,
  319,  320,  300,  264,  323,  221,  221,  326,  327,  419,
  329,  341,  331,  332,  333,  416,  335,  412,  400,   -1,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,   -1,  262,   -1,   -1,  265,  266,  267,   -1,
    0,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,   -1,
  279,  280,  281,   -1,  283,   -1,  285,  286,   -1,  288,
   -1,  290,  291,  292,  293,  294,  295,   -1,  297,  298,
  299,   -1,   -1,  302,   -1,   -1,   -1,  306,  307,  308,
  309,  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,
  319,  320,   -1,   -1,  323,   -1,   -1,  326,  327,   -1,
  329,   -1,  331,  332,  333,   -1,  335,   -1,   -1,   -1,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,   -1,   -1,  262,   -1,   -1,  265,  266,  267,
    0,   -1,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,
   -1,  279,  280,  281,   -1,  283,   -1,  285,  286,   -1,
  288,   -1,  290,  291,  292,  293,  294,  295,   -1,  297,
  298,  299,   -1,   -1,  302,   -1,   -1,   -1,  306,  307,
  308,  309,  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,
   -1,  319,  320,   -1,   -1,  323,   -1,   -1,  326,  327,
   -1,  329,   -1,  331,  332,  333,   -1,  335,   -1,   -1,
   -1,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  262,   -1,   -1,  265,  266,  267,    0,
   -1,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,   -1,
  279,  280,  281,   -1,  283,   -1,  285,  286,   -1,  288,
   -1,  290,  291,  292,  293,  294,  295,   -1,  297,  298,
  299,   -1,   -1,  302,   -1,   -1,   -1,  306,  307,  308,
  309,  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,
  319,  320,   -1,   -1,  323,   -1,   -1,  326,  327,   -1,
  329,   -1,  331,   -1,  333,   -1,  335,   -1,   -1,   -1,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,  262,   -1,   -1,  265,  266,  267,    0,   -1,
   -1,  271,   -1,  273,   -1,   -1,  276,   -1,   -1,  279,
  280,  281,   -1,  283,   -1,  285,  286,   -1,  288,   -1,
  290,  291,  292,  293,  294,  295,   -1,  297,  298,  299,
   -1,   -1,  302,   -1,   -1,   -1,  306,  307,  308,  309,
  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,
  320,   -1,   -1,  323,   -1,   -1,  326,  327,   -1,  329,
   -1,  331,   -1,  333,   -1,  335,   -1,   -1,   -1,  339,
  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
  350,   -1,  262,   -1,   -1,  265,  266,  267,    0,   -1,
   -1,  271,   -1,  273,   -1,   -1,  276,   -1,   -1,  279,
  280,  281,   -1,  283,   -1,  285,  286,   -1,  288,   -1,
  290,  291,  292,  293,  294,  295,   -1,  297,  298,  299,
   -1,   -1,  302,   -1,   -1,   -1,  306,  307,  308,  309,
  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,
  320,   -1,   -1,  323,   -1,   -1,  326,  327,   -1,  329,
   -1,  331,   -1,  333,   -1,  335,   -1,   -1,   -1,  339,
  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
  350,  262,   -1,   -1,  265,  266,  267,    0,   -1,   -1,
  271,   -1,  273,   -1,   -1,  276,   -1,   -1,  279,  280,
  281,   -1,  283,   -1,  285,  286,   -1,  288,   -1,  290,
  291,  292,  293,  294,  295,   -1,  297,  298,  299,   -1,
   -1,  302,   -1,   -1,   -1,  306,  307,  308,  309,  310,
   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,  320,
   -1,   -1,  323,   -1,   -1,  326,  327,   -1,  329,   -1,
  331,   -1,  333,   -1,  335,   -1,   -1,   -1,  339,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
  262,   -1,   -1,  265,  266,  267,    0,   -1,   -1,  271,
   -1,  273,   -1,   -1,  276,   -1,   -1,  279,  280,  281,
   -1,  283,   -1,  285,  286,   -1,  288,   -1,  290,  291,
  292,  293,  294,  295,    0,  297,  298,  299,   -1,   -1,
  302,   -1,   -1,   -1,  306,  307,  308,  309,  310,   -1,
   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,  320,   -1,
   -1,  323,   -1,   -1,  326,  327,   -1,  329,   -1,  331,
   -1,  333,   -1,  335,   -1,   -1,   -1,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,   -1,
  262,    0,   -1,  265,  266,  267,   -1,   -1,   -1,  271,
   -1,  273,   -1,   -1,  276,   -1,   -1,  279,  280,  281,
   -1,  283,   -1,  285,  286,   -1,  288,   -1,  290,  291,
  292,  293,  294,  295,   -1,  297,  298,  299,   -1,   -1,
  302,   -1,   -1,   -1,  306,  307,  308,  309,  310,   -1,
   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,  320,   -1,
   -1,  323,   -1,   -1,  326,  327,   -1,  329,   -1,  331,
   -1,  333,   -1,  335,   -1,   -1,   -1,  339,  340,  341,
   -1,   -1,   -1,  345,  346,  347,  348,  349,  350,  262,
    0,   -1,  265,  266,  267,   -1,   -1,   -1,  271,   -1,
  273,   -1,   -1,  276,   -1,   -1,  279,  280,  281,   -1,
  283,   -1,  285,  286,   -1,  288,   -1,  290,  291,  292,
  293,  294,  295,   -1,  297,  298,  299,   -1,   -1,  302,
   -1,   -1,   -1,  306,  307,  308,  309,  310,   -1,   -1,
   -1,   -1,  315,   -1,   -1,   -1,  319,  320,   -1,   -1,
  323,   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,
  333,   -1,  335,   -1,   -1,   -1,  339,  340,  341,   -1,
   -1,   -1,  345,  346,  347,  348,  349,  350,  262,    0,
   -1,  265,  266,  267,   -1,   -1,   -1,  271,   -1,  273,
   -1,   -1,  276,   -1,   -1,  279,  280,  281,   -1,  283,
   -1,  285,  286,   -1,  288,   -1,  290,  291,  292,  293,
  294,  295,   -1,  297,  298,  299,   -1,   -1,  302,   -1,
   -1,   -1,  306,  307,  308,  309,  310,   -1,   -1,   -1,
   -1,  315,  288,   -1,  290,  319,  320,   -1,   -1,  323,
   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,  333,
   -1,  335,  308,   -1,   -1,  339,   -1,   -1,   -1,   -1,
   -1,  345,  346,  262,   -1,   -1,  265,  266,  267,    0,
   -1,  327,  271,   -1,  273,  331,   -1,  276,   -1,  335,
  279,  280,  281,   -1,  283,   -1,  285,  286,   -1,  288,
   -1,  290,  291,  292,  293,  294,  295,   -1,  297,  298,
  299,   -1,   -1,  302,   -1,   -1,   -1,  306,  307,  308,
  309,  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,
  319,  320,   -1,   -1,  323,   -1,  273,  326,  327,   -1,
  329,   -1,  331,   -1,  333,    0,  335,   -1,   -1,  286,
  339,   -1,   -1,   -1,   -1,  292,  345,  346,  295,   -1,
  297,   -1,  262,   -1,   -1,  265,  266,  267,   -1,   -1,
   -1,  271,  309,  273,   -1,   -1,  276,   -1,  315,  279,
  280,  281,   -1,  283,   -1,  285,  286,   -1,  288,   -1,
  290,  291,  292,  293,  294,  295,   -1,  297,  298,  299,
   -1,   -1,  302,   -1,   -1,   -1,  306,  307,  308,  309,
  310,   -1,   -1,   -1,   -1,  315,    0,   -1,   -1,  319,
  320,   -1,   -1,  323,   -1,   -1,  326,  327,   -1,  329,
   -1,  331,   -1,  333,   -1,  335,   -1,   -1,   -1,  339,
   -1,   -1,   -1,   -1,   -1,  345,  346,   -1,   -1,   -1,
   -1,  262,   -1,   -1,  265,  266,  267,   -1,   -1,   -1,
  271,   -1,  273,   -1,   -1,  276,   -1,   -1,  279,  280,
  281,   -1,  283,   -1,  285,  286,   -1,  288,   -1,  290,
  291,  292,  293,  294,  295,   -1,  297,  298,  299,   -1,
   -1,  302,    0,   -1,   -1,  306,  307,  308,  309,  310,
   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,  320,
   -1,   -1,  323,   -1,   -1,  326,  327,   -1,  329,   -1,
  331,   -1,  333,   -1,  335,   -1,   -1,   -1,  339,   -1,
   -1,   -1,   -1,   -1,  345,  346,  257,  258,  259,  260,
   -1,   -1,  263,   -1,   -1,   -1,   -1,   -1,  269,  270,
   -1,   -1,   -1,  274,  275,   -1,   -1,  278,   -1,   -1,
   -1,  282,  332,  284,   -1,   -1,  287,    0,  289,   -1,
  340,  341,  342,  343,  344,  296,   -1,   -1,   -1,  300,
  301,  302,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  313,   -1,   -1,  316,  317,  318,   -1,   -1,
   -1,  322,   -1,   -1,   -1,   -1,   -1,  262,   -1,   -1,
  265,  266,  267,  334,   -1,   -1,  271,  338,  273,  340,
  341,  276,   -1,   -1,  279,  280,  281,   -1,  283,   -1,
  285,  286,   -1,  288,   -1,  290,  291,  292,  293,  294,
  295,   -1,  297,  298,  299,    0,   -1,  302,   -1,   -1,
   -1,  306,  307,  308,  309,  310,   -1,   -1,   -1,   -1,
  315,   -1,   -1,   -1,  319,  320,   -1,   -1,  323,   -1,
   -1,  326,  327,   -1,  329,   -1,  331,   -1,  262,   -1,
  335,  265,  266,  267,  339,   -1,   -1,  271,   -1,  273,
   -1,   -1,  276,   -1,   -1,  279,  280,  281,   -1,  283,
   -1,  285,  286,   -1,  288,   -1,  290,  291,  292,  293,
  294,  295,   -1,  297,  298,  299,    0,   -1,  302,   -1,
   -1,   -1,  306,  307,  308,  309,  310,   -1,   -1,   -1,
   -1,  315,   -1,   -1,   -1,  319,  320,   -1,   -1,  323,
   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,   -1,
   -1,  335,   -1,   -1,  262,  339,   -1,  265,  266,  267,
   -1,   -1,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,
   -1,  279,  280,  281,   -1,  283,   -1,  285,  286,   -1,
  288,   -1,  290,  291,  292,  293,  294,  295,   -1,  297,
  298,  299,    0,   -1,  302,   -1,   -1,   -1,  306,  307,
  308,  309,  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,
   -1,  319,  320,   -1,   -1,  323,   -1,   -1,  326,  327,
   -1,  329,   -1,  331,   -1,   -1,   -1,  335,   -1,  262,
   -1,  339,  265,  266,  267,   -1,   -1,   -1,  271,   -1,
  273,   -1,   -1,  276,   -1,   -1,  279,  280,  281,   -1,
  283,   -1,  285,  286,   -1,  288,   -1,  290,  291,  292,
  293,  294,  295,    0,  297,  298,  299,   -1,   -1,  302,
   -1,   -1,   -1,  306,  307,  308,  309,  310,   -1,   -1,
   -1,   -1,  315,   -1,   -1,   -1,  319,  320,   -1,   -1,
  323,   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,
   -1,   -1,  335,   -1,   -1,   -1,  339,  262,   -1,   -1,
  265,  266,  267,   -1,   -1,   -1,  271,   -1,  273,   -1,
   -1,  276,   -1,   -1,  279,  280,  281,   -1,  283,   -1,
  285,  286,   -1,  288,    0,  290,  291,  292,   -1,  294,
  295,   -1,  297,  298,  299,   -1,   -1,  302,   -1,   -1,
   -1,  306,  307,  308,  309,  310,   -1,   -1,   -1,   -1,
  315,   -1,   -1,   -1,  319,  320,   -1,   -1,  323,   -1,
   -1,  326,  327,   -1,  329,   -1,  331,   -1,  262,   -1,
  335,  265,  266,  267,  339,   -1,   -1,  271,   -1,  273,
   -1,   -1,  276,   -1,   -1,  279,  280,  281,   -1,  283,
   -1,  285,  286,   -1,  288,    0,  290,  291,  292,   -1,
  294,  295,   -1,  297,  298,  299,   -1,   -1,  302,   -1,
   -1,   -1,  306,  307,  308,  309,  310,   -1,   -1,   -1,
   -1,  315,   -1,   -1,   -1,  319,  320,   -1,   -1,  323,
   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,   -1,
   -1,  335,   -1,   -1,  262,  339,   -1,  265,  266,  267,
   -1,   -1,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,
   -1,  279,  280,  281,   -1,  283,    0,  285,  286,   -1,
  288,   -1,  290,  291,  292,   -1,  294,  295,   -1,  297,
  298,  299,   -1,   -1,  302,   -1,   -1,   -1,  306,  307,
  308,  309,  310,   -1,   -1,   -1,   -1,  315,   -1,   -1,
   -1,  319,  320,   -1,   -1,   -1,   -1,   -1,  326,  327,
   -1,  329,   -1,  331,   -1,  262,   -1,  335,  265,  266,
  267,  339,   -1,   -1,  271,   -1,  273,   -1,   -1,  276,
   -1,   -1,  279,  280,   -1,   -1,  283,    0,  285,  286,
   -1,  288,   -1,  290,  291,  292,   -1,  294,  295,   -1,
  297,  298,  299,   -1,   -1,  302,   -1,   -1,   -1,  306,
  307,  308,  309,  310,   -1,   -1,   -1,   -1,  315,   -1,
   -1,   -1,  319,  320,   -1,   -1,   -1,   -1,   -1,  326,
  327,   -1,  329,   -1,  331,   -1,  262,   -1,  335,  265,
  266,  267,  339,   -1,   -1,  271,   -1,  273,   -1,   -1,
  276,   -1,   -1,  279,  280,   -1,   -1,  283,    0,  285,
  286,   -1,  288,   -1,  290,  291,  292,   -1,  294,  295,
   -1,  297,  298,  299,   -1,   -1,  302,   -1,   -1,   -1,
  306,  307,  308,  309,   -1,   -1,   -1,   -1,   -1,  315,
   -1,   -1,   -1,  319,  320,   -1,   -1,   -1,   -1,   -1,
  326,  327,   -1,  329,   -1,  331,   -1,  262,   -1,  335,
  265,  266,  267,  339,   -1,   -1,  271,   -1,  273,   -1,
   -1,  276,   -1,   -1,  279,  280,   -1,   -1,  283,    0,
  285,  286,   -1,  288,   -1,  290,  291,  292,   -1,  294,
  295,   -1,  297,  298,  299,   -1,   -1,  302,   -1,   -1,
   -1,  306,  307,  308,  309,   -1,   -1,   -1,   -1,   -1,
  315,   -1,   -1,   -1,  319,  320,   -1,   -1,   -1,   -1,
   -1,  326,  327,   -1,  329,   -1,  331,   -1,  262,   -1,
  335,  265,  266,  267,  339,   -1,   -1,  271,   -1,  273,
   -1,   -1,  276,   -1,   -1,  279,  280,   -1,   -1,  283,
    0,  285,  286,   -1,  288,   -1,  290,   -1,  292,   -1,
  294,  295,   -1,  297,   -1,  299,   -1,   -1,  302,   -1,
   -1,   -1,  306,  307,  308,  309,   -1,   -1,   -1,   -1,
   -1,  315,   -1,   -1,   -1,  319,  320,   -1,   -1,   -1,
   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,  262,
   -1,  335,  265,  266,  267,  339,   -1,   -1,  271,   -1,
  273,   -1,   -1,  276,   -1,   -1,  279,  280,   -1,   -1,
   -1,    0,  285,  286,   -1,  288,   -1,  290,  291,  292,
   -1,  294,  295,   -1,  297,   -1,  299,   -1,   -1,  302,
   -1,   -1,   -1,  306,  307,  308,  309,   -1,   -1,   -1,
   -1,   -1,  315,   -1,   -1,   -1,  319,  320,   -1,   -1,
   -1,   -1,   -1,  326,  327,   -1,  329,   -1,  331,   -1,
  262,   -1,  335,  265,  266,  267,  339,   -1,   -1,  271,
   -1,  273,   -1,   -1,  276,   -1,   -1,  279,  280,   -1,
   -1,  283,    0,  285,  286,   -1,  288,   -1,  290,   -1,
  292,   -1,  294,  295,   -1,  297,   -1,  299,   -1,   -1,
  302,   -1,   -1,   -1,  306,  307,  308,  309,   -1,   -1,
   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,  320,   -1,
   -1,   -1,   -1,   -1,  326,  327,   -1,  329,   -1,  331,
   -1,  262,   -1,  335,  265,  266,  267,  339,   -1,   -1,
  271,   -1,  273,   -1,   -1,  276,   -1,   -1,  279,  280,
   -1,   -1,   -1,    0,  285,  286,   -1,  288,   -1,  290,
  291,  292,   -1,  294,  295,   -1,  297,   -1,  299,   -1,
   -1,  302,   -1,   -1,   -1,  306,  307,  308,  309,   -1,
   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,  320,
   -1,   -1,   -1,   -1,   -1,  326,  327,   -1,  329,   -1,
  331,   -1,  262,   -1,  335,  265,  266,   -1,  339,   -1,
    0,  271,   -1,  273,   -1,   -1,  276,   -1,   -1,  279,
  280,   -1,   -1,  283,   -1,  285,  286,   -1,  288,   -1,
  290,   -1,  292,   -1,   -1,  295,   -1,  297,   -1,  299,
   -1,   -1,   -1,   -1,   -1,   -1,  306,  307,  308,  309,
   -1,   -1,   -1,   -1,   -1,  315,   -1,   -1,    0,  319,
  320,   -1,   -1,   -1,   -1,   -1,  326,  327,   -1,  329,
   -1,  331,   -1,  262,   -1,  335,  265,  266,   -1,  339,
   -1,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,   -1,
  279,  280,   -1,   -1,  283,   -1,  285,  286,   -1,  288,
   -1,  290,   -1,  292,   -1,   -1,  295,   -1,  297,   -1,
  299,   -1,   -1,   -1,   -1,   -1,   -1,  306,  307,  308,
  309,   -1,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,
  319,  320,   -1,   -1,   -1,   -1,   -1,  326,  327,   -1,
  329,   -1,  331,   -1,  262,   -1,  335,  265,  266,   -1,
  339,   -1,   -1,  271,   -1,  273,   -1,   -1,  276,   -1,
   -1,  279,  280,   -1,   -1,  283,   -1,  285,  286,   -1,
  288,   -1,  290,   -1,  292,   -1,   -1,  295,   -1,  297,
   -1,  299,   -1,   -1,   -1,   -1,   -1,   -1,  306,  307,
  308,  309,   -1,   -1,   -1,   -1,   -1,  315,   -1,   -1,
   -1,  319,  320,   -1,   -1,   -1,   -1,   -1,  326,  327,
   -1,  329,   -1,  331,   -1,  262,   -1,  335,  265,  266,
   -1,  339,   -1,   -1,  271,   -1,  273,   -1,   -1,  276,
   -1,   -1,  279,  280,   -1,   -1,  283,   -1,  285,  286,
   -1,  288,   -1,  290,   -1,  292,   -1,   -1,  295,   -1,
  297,   -1,  299,   -1,   -1,   -1,   -1,   -1,   -1,  306,
  307,  308,  309,   -1,   -1,   -1,   -1,   -1,  315,   -1,
   -1,   -1,  319,  320,   -1,  265,  266,   -1,   -1,  326,
  327,  271,  329,  273,  331,   -1,  276,   -1,  335,  279,
  280,   -1,  339,  283,   -1,  285,  286,   -1,  288,   -1,
  290,   -1,  292,   -1,   -1,  295,   -1,  297,   -1,  299,
   -1,   -1,   -1,   -1,   -1,   -1,  306,  307,  308,  309,
   -1,   -1,   -1,   -1,   -1,  315,   -1,   -1,   -1,  319,
  320,  273,   -1,   -1,   -1,   -1,  326,  327,   -1,  329,
   -1,  331,   -1,   -1,  286,  335,  288,   -1,  290,  339,
  292,   -1,   -1,  295,   -1,  297,  281,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  262,  308,  309,  293,  266,
  267,   -1,   -1,  315,  271,   -1,   -1,   -1,   -1,  276,
   -1,   -1,   -1,   -1,  281,  327,   -1,  329,   -1,  331,
   -1,   -1,   -1,  335,  291,   -1,  293,  294,  323,   -1,
   -1,  298,   -1,   -1,   -1,  302,   -1,  332,  333,   -1,
  307,   -1,   -1,  310,   -1,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  323,   -1,  281,   -1,
  283,   -1,   -1,   -1,   -1,  332,  333,  262,   -1,   -1,
  293,   -1,  267,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,   -1,   -1,  281,  310,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  291,   -1,  293,  294,
  323,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,  332,
  333,   -1,  307,   -1,   -1,  310,   -1,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,  323,   -1,
   -1,   -1,   -1,   -1,  329,   -1,   -1,  332,  333,  262,
  335,   -1,   -1,   -1,  267,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,   -1,   -1,  281,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  291,   -1,
  293,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,  302,
   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  320,   -1,   -1,
  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  332,
  333,  262,   -1,   -1,  265,   -1,  267,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,   -1,   -1,
  281,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  262,
  291,   -1,  293,  294,  267,   -1,   -1,  298,   -1,   -1,
   -1,  302,   -1,   -1,   -1,   -1,  307,   -1,  281,  310,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  291,   -1,
  293,  294,  323,   -1,   -1,  298,   -1,   -1,   -1,  302,
   -1,  332,  333,   -1,  307,   -1,   -1,  310,   -1,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
  323,   -1,   -1,   -1,   -1,   -1,  329,   -1,   -1,  332,
  333,  262,   -1,   -1,   -1,   -1,  267,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,   -1,   -1,
  281,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  262,
  291,   -1,  293,  294,  267,   -1,   -1,  298,   -1,   -1,
   -1,  302,   -1,   -1,   -1,   -1,  307,   -1,  281,  310,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  291,   -1,
  293,  294,  323,   -1,   -1,  298,   -1,   -1,  329,  302,
   -1,  332,  333,   -1,  307,   -1,   -1,  310,   -1,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
  323,   -1,   -1,   -1,   -1,   -1,  329,   -1,   -1,  332,
  333,  262,   -1,  293,  265,   -1,  267,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,   -1,   -1,
  281,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  291,   -1,  293,  294,   -1,   -1,   -1,  298,   -1,   -1,
   -1,  302,  332,  333,   -1,   -1,  307,   -1,   -1,  310,
  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
  350,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  332,  333,  262,   -1,   -1,  265,   -1,  267,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
   -1,   -1,  281,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  291,   -1,  293,  294,   -1,   -1,   -1,  298,
   -1,   -1,   -1,  302,  332,  333,   -1,   -1,  307,   -1,
   -1,  310,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,   -1,  323,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  332,  333,  262,   -1,   -1,   -1,   -1,
  267,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,   -1,   -1,  281,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  262,  291,   -1,  293,  294,  267,   -1,
   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,   -1,   -1,
  307,   -1,  281,  310,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  291,  320,  293,  294,  323,   -1,   -1,  298,
   -1,   -1,   -1,  302,   -1,  332,  333,   -1,  307,   -1,
   -1,  310,   -1,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,  323,   -1,   -1,   -1,   -1,   -1,
  329,   -1,   -1,  332,  333,  262,   -1,   -1,   -1,   -1,
  267,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,   -1,   -1,  281,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  262,  291,   -1,  293,  294,  267,   -1,
   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,   -1,   -1,
  307,   -1,  281,  310,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  291,   -1,  293,  294,  323,   -1,   -1,  298,
   -1,   -1,   -1,  302,   -1,  332,  333,   -1,  307,   -1,
   -1,  310,   -1,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,  323,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  332,  333,  262,   -1,   -1,   -1,   -1,
  267,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,   -1,   -1,  281,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  262,  291,   -1,  293,  294,  267,   -1,
   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,   -1,   -1,
  307,   -1,  281,  310,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  291,   -1,  293,  294,  323,   -1,   -1,  298,
   -1,   -1,   -1,  302,   -1,  332,  333,   -1,  307,   -1,
   -1,  310,   -1,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,  323,   -1,  281,   -1,  283,   -1,
   -1,   -1,   -1,  332,  333,  262,   -1,   -1,  293,   -1,
  267,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,   -1,   -1,  281,  310,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  291,   -1,  293,  294,  323,   -1,
   -1,  298,   -1,   -1,   -1,  302,   -1,  332,  333,   -1,
   -1,   -1,   -1,  310,   -1,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  332,  333,   -1,   -1,   -1,
   -1,   -1,   -1,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,  257,  258,  259,  260,  261,   -1,
  263,   -1,   -1,   -1,   -1,   -1,  269,  270,   -1,   -1,
   -1,  274,  275,   -1,  277,  278,   -1,   -1,   -1,  282,
   -1,  284,   -1,   -1,   -1,   -1,  289,   -1,   -1,   -1,
   -1,   -1,   -1,  296,   -1,   -1,   -1,  300,  301,  302,
  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  313,   -1,   -1,  316,   -1,  318,   -1,   -1,  321,  322,
   -1,   -1,  325,   -1,   -1,   -1,   -1,  257,  258,  259,
  260,  334,   -1,  263,   -1,  338,   -1,  340,  341,  269,
  270,   -1,   -1,   -1,  274,  275,   -1,   -1,  278,   -1,
   -1,   -1,  282,   -1,  284,   -1,   -1,  287,   -1,  289,
   -1,   -1,   -1,   -1,   -1,   -1,  296,   -1,   -1,   -1,
  300,  301,  302,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  313,   -1,   -1,  316,  317,  318,   -1,
   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  257,  258,  259,  260,  334,   -1,  263,   -1,  338,   -1,
  340,  341,  269,  270,   -1,   -1,   -1,  274,  275,   -1,
   -1,  278,   -1,   -1,   -1,  282,   -1,  284,   -1,   -1,
   -1,   -1,  289,   -1,   -1,   -1,   -1,   -1,   -1,  296,
   -1,   -1,   -1,  300,  301,  302,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  313,   -1,  332,  316,
  317,  318,   -1,   -1,   -1,  322,  340,  341,  342,  343,
  344,   -1,   -1,  347,  348,  349,  350,  334,   -1,   -1,
   -1,  338,   -1,  340,  341,  257,  258,  259,  260,  261,
   -1,  263,   -1,   -1,   -1,   -1,   -1,  269,  270,   -1,
   -1,   -1,  274,  275,   -1,   -1,  278,   -1,   -1,   -1,
  282,   -1,  284,   -1,   -1,   -1,   -1,  289,   -1,   -1,
   -1,   -1,   -1,   -1,  296,   -1,   -1,   -1,  300,  301,
  302,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  313,   -1,   -1,  316,   -1,  318,   -1,   -1,   -1,
  322,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
  259,  260,  334,   -1,  263,   -1,  338,   -1,  340,  341,
  269,  270,   -1,   -1,   -1,  274,  275,   -1,   -1,  278,
   -1,   -1,   -1,  282,   -1,  284,   -1,   -1,   -1,   -1,
  289,   -1,   -1,   -1,   -1,   -1,   -1,  296,   -1,   -1,
   -1,  300,  301,  302,  303,   -1,  305,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  313,   -1,   -1,  316,  317,  318,
   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  257,  258,  259,  260,  334,   -1,  263,   -1,  338,
   -1,  340,  341,  269,  270,   -1,   -1,   -1,  274,  275,
   -1,   -1,  278,   -1,   -1,   -1,  282,   -1,  284,   -1,
   -1,   -1,   -1,  289,   -1,   -1,   -1,   -1,   -1,   -1,
  296,   -1,   -1,   -1,  300,  301,  302,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  313,   -1,   -1,
  316,   -1,  318,   -1,   -1,   -1,  322,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  257,  258,  259,  260,  334,  335,
  263,   -1,  338,   -1,  340,  341,  269,  270,   -1,   -1,
   -1,  274,  275,   -1,   -1,  278,   -1,   -1,   -1,  282,
   -1,  284,   -1,   -1,   -1,   -1,  289,   -1,   -1,   -1,
   -1,   -1,   -1,  296,   -1,   -1,   -1,  300,  301,  302,
  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  313,   -1,   -1,  316,   -1,  318,   -1,   -1,   -1,  322,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
  260,  334,  335,  263,   -1,  338,   -1,  340,  341,  269,
  270,   -1,   -1,   -1,  274,  275,   -1,   -1,  278,   -1,
   -1,   -1,  282,   -1,  284,   -1,   -1,   -1,   -1,  289,
   -1,   -1,   -1,   -1,   -1,   -1,  296,   -1,   -1,   -1,
  300,  301,  302,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  313,   -1,   -1,  316,  317,  318,   -1,
   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  257,  258,  259,  260,  334,   -1,  263,   -1,  338,   -1,
  340,  341,  269,  270,   -1,   -1,   -1,  274,  275,   -1,
   -1,  278,   -1,   -1,   -1,  282,   -1,  284,   -1,   -1,
   -1,   -1,  289,   -1,   -1,   -1,   -1,   -1,   -1,  296,
   -1,   -1,   -1,  300,  301,  302,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  313,   -1,   -1,  316,
  317,  318,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  257,  258,  259,  260,  334,   -1,  263,
   -1,  338,   -1,  340,  341,  269,  270,   -1,   -1,   -1,
  274,  275,   -1,   -1,  278,   -1,   -1,   -1,  282,   -1,
  284,   -1,   -1,   -1,   -1,  289,   -1,   -1,   -1,   -1,
   -1,   -1,  296,   -1,   -1,   -1,  300,  301,  302,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  313,
   -1,   -1,  316,  317,  318,   -1,   -1,   -1,  322,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,
  334,   -1,  263,   -1,  338,   -1,  340,  341,  269,  270,
   -1,   -1,   -1,  274,  275,   -1,   -1,  278,   -1,   -1,
   -1,  282,   -1,  284,   -1,   -1,   -1,   -1,  289,   -1,
   -1,   -1,   -1,   -1,   -1,  296,   -1,   -1,   -1,  300,
  301,  302,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  313,   -1,   -1,  316,   -1,  318,   -1,   -1,
  321,  322,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
  258,  259,  260,  334,   -1,  263,   -1,  338,   -1,  340,
  341,  269,  270,   -1,   -1,   -1,  274,  275,   -1,   -1,
  278,   -1,   -1,   -1,  282,   -1,  284,   -1,   -1,   -1,
   -1,  289,   -1,   -1,   -1,   -1,   -1,   -1,  296,   -1,
   -1,   -1,  300,  301,  302,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  313,   -1,   -1,  316,   -1,
  318,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  257,  258,  259,  260,  334,   -1,  263,   -1,
  338,   -1,  340,  341,  269,  270,   -1,   -1,   -1,  274,
  275,   -1,   -1,  278,   -1,   -1,   -1,  282,   -1,  284,
   -1,   -1,   -1,   -1,  289,   -1,   -1,   -1,   -1,   -1,
   -1,  296,   -1,   -1,   -1,  300,  301,  302,  303,   -1,
  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  313,   -1,
   -1,  316,   -1,  318,   -1,   -1,   -1,  322,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  334,
   -1,  263,   -1,  338,   -1,  340,  341,  269,  270,   -1,
   -1,   -1,  274,  275,   -1,   -1,  278,   -1,   -1,   -1,
  282,   -1,  284,   -1,   -1,   -1,   -1,  289,   -1,   -1,
   -1,   -1,   -1,   -1,  296,   -1,   -1,   -1,  300,  301,
  302,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  313,   -1,   -1,  316,   -1,  318,   -1,   -1,   -1,
  322,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
  259,  260,  334,   -1,  263,   -1,  338,   -1,  340,  341,
  269,  270,   -1,   -1,   -1,  274,  275,   -1,   -1,  278,
   -1,  267,   -1,  282,   -1,  284,   -1,   -1,   -1,   -1,
  289,   -1,   -1,   -1,   -1,  281,   -1,  296,   -1,   -1,
   -1,  300,  301,  302,  303,  291,  305,  293,  294,   -1,
   -1,   -1,  298,   -1,  313,   -1,  302,  316,   -1,  318,
   -1,  307,   -1,  322,  310,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,  323,   -1,  338,
   -1,  340,  341,   -1,   -1,   -1,  332,  333,   -1,   -1,
   -1,  267,   -1,   -1,  340,  341,  342,  343,  344,  345,
  346,  347,  348,  349,  350,  281,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  291,   -1,  293,  294,   -1,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,   -1,
   -1,   -1,   -1,  281,  310,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  293,   -1,  323,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,  332,  333,   -1,   -1,
   -1,   -1,  310,   -1,  340,  341,  342,  343,  344,  345,
  346,  347,  348,  349,  350,  323,  281,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  332,  333,   -1,   -1,  293,   -1,
   -1,   -1,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,   -1,   -1,  310,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  332,  333,   -1,
   -1,   -1,   -1,   -1,   -1,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  332,  333,   -1,   -1,   -1,
   -1,   -1,   -1,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,
};
static short YYFINAL=2;
static short YYMAXTOKEN=352;
static String [] yyname = {
"end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,"IDENTIFIER","ESCAPED_IDENTIFIER","PARAMETER","LITERAL","ALL",
"AND","ANYELEMENT","APPLY","AS","ASC","BETWEEN","BY","CASE","CAST","COLLATE",
"COLLECTION","CROSS","CREATEREF","DEREF","DESC","DISTINCT","ELEMENT","ELSE",
"END","EXCEPT","EXISTS","ESCAPE","FLATTEN","FROM","FULL","FUNCTION","GROUP",
"GROUPPARTITION","HAVING","IN","INNER","INTERSECT","IS","JOIN","KEY","LEFT",
"LIKE","LIMIT","MULTISET","NAVIGATE","NOT","NULL","OF","OFTYPE","ON","OR",
"ORDER","OUTER","OVERLAPS","ONLY","QMARK","REF","RELATIONSHIP","RIGHT","ROW",
"SELECT","SET","SKIP","THEN","TOP","TREAT","UNION","USING","VALUE","WHEN",
"WHERE","WITH","COMMA","COLON","SCOLON","DOT","EQUAL","L_PAREN","R_PAREN",
"L_BRACE","R_BRACE","L_CURLY","R_CURLY","PLUS","MINUS","STAR","FSLASH",
"PERCENT","OP_EQ","OP_NEQ","OP_LT","OP_LE","OP_GT","OP_GE","UNARYPLUS",
"UNARYMINUS",
};
static String [] yyrule = {
"$accept : commandStart",
"commandStart :",
"commandStart : command",
"command : optNamespaceImportList queryStatement",
"optNamespaceImportList :",
"optNamespaceImportList : namespaceImportList",
"namespaceImportList : namespaceImport",
"namespaceImportList : namespaceImportList namespaceImport",
"namespaceImport : USING identifier SCOLON",
"namespaceImport : USING dotExpr SCOLON",
"namespaceImport : USING assignExpr SCOLON",
"queryStatement : optQueryDefList generalExpr optSemiColon",
"optQueryDefList :",
"optQueryDefList : functionDefList",
"functionDefList : functionDef",
"functionDefList : functionDefList functionDef",
"functionDef : FUNCTION identifier functionParamsDef AS L_PAREN generalExpr R_PAREN",
"functionParamsDef : L_PAREN R_PAREN",
"functionParamsDef : L_PAREN functionParamDefList R_PAREN",
"functionParamDefList : functionParamDef",
"functionParamDefList : functionParamDefList COMMA functionParamDef",
"functionParamDef : identifier typeDef",
"generalExpr : queryExpr",
"generalExpr : Expr",
"optSemiColon :",
"optSemiColon : SCOLON",
"queryExpr : selectClause fromClause optWhereClause optGroupByClause optHavingClause optOrderByClause",
"$$1 :",
"selectClause : SELECT $$1 optAllOrDistinct optTopClause aliasExprList",
"$$2 :",
"selectClause : SELECT $$2 VALUE optAllOrDistinct optTopClause aliasExprList",
"optAllOrDistinct :",
"optAllOrDistinct : ALL",
"optAllOrDistinct : DISTINCT",
"optTopClause :",
"optTopClause : TOP L_PAREN generalExpr R_PAREN",
"fromClause : FROM fromClauseList",
"fromClauseList : fromClauseItem",
"fromClauseList : fromClauseList COMMA fromClauseItem",
"fromClauseItem : aliasExpr",
"fromClauseItem : L_PAREN joinClauseItem R_PAREN",
"fromClauseItem : joinClauseItem",
"fromClauseItem : L_PAREN applyClauseItem R_PAREN",
"fromClauseItem : applyClauseItem",
"joinClauseItem : fromClauseItem joinType fromClauseItem",
"joinClauseItem : fromClauseItem joinType fromClauseItem ON Expr",
"applyClauseItem : fromClauseItem applyType fromClauseItem",
"joinType : CROSS JOIN",
"joinType : LEFT OUTER JOIN",
"joinType : LEFT JOIN",
"joinType : RIGHT OUTER JOIN",
"joinType : RIGHT JOIN",
"joinType : JOIN",
"joinType : INNER JOIN",
"joinType : FULL JOIN",
"joinType : FULL OUTER JOIN",
"joinType : FULL OUTER",
"applyType : CROSS APPLY",
"applyType : OUTER APPLY",
"optWhereClause :",
"optWhereClause : whereClause",
"whereClause : WHERE Expr",
"optGroupByClause :",
"optGroupByClause : groupByClause",
"groupByClause : GROUP BY aliasExprList",
"optHavingClause :",
"optHavingClause : havingClause",
"$$3 :",
"havingClause : HAVING $$3 Expr",
"optOrderByClause :",
"optOrderByClause : orderByClause",
"$$4 :",
"orderByClause : ORDER BY $$4 orderByItemList optSkipSubClause optLimitSubClause",
"optSkipSubClause :",
"optSkipSubClause : SKIP Expr",
"optLimitSubClause :",
"optLimitSubClause : LIMIT Expr",
"orderByItemList : orderByClauseItem",
"orderByItemList : orderByItemList COMMA orderByClauseItem",
"orderByClauseItem : Expr optAscDesc",
"orderByClauseItem : Expr COLLATE simpleIdentifier optAscDesc",
"optAscDesc :",
"optAscDesc : ASC",
"optAscDesc : DESC",
"exprList : Expr",
"exprList : exprList COMMA Expr",
"Expr : parenExpr",
"Expr : PARAMETER",
"Expr : identifier",
"Expr : builtInExpr",
"Expr : dotExpr",
"Expr : refExpr",
"Expr : createRefExpr",
"Expr : keyExpr",
"Expr : groupPartitionExpr",
"Expr : methodExpr",
"Expr : ctorExpr",
"Expr : derefExpr",
"Expr : navigateExpr",
"Expr : literalExpr",
"parenExpr : L_PAREN generalExpr R_PAREN",
"betweenPrefix : Expr BETWEEN Expr",
"notBetweenPrefix : Expr NOT BETWEEN Expr",
"builtInExpr : Expr PLUS Expr",
"builtInExpr : Expr MINUS Expr",
"builtInExpr : Expr STAR Expr",
"builtInExpr : Expr FSLASH Expr",
"builtInExpr : Expr PERCENT Expr",
"builtInExpr : MINUS Expr",
"builtInExpr : PLUS Expr",
"builtInExpr : Expr OP_NEQ Expr",
"builtInExpr : Expr OP_GT Expr",
"builtInExpr : Expr OP_GE Expr",
"builtInExpr : Expr OP_LT Expr",
"builtInExpr : Expr OP_LE Expr",
"builtInExpr : Expr INTERSECT Expr",
"builtInExpr : Expr UNION Expr",
"builtInExpr : Expr UNION ALL Expr",
"builtInExpr : Expr EXCEPT Expr",
"builtInExpr : Expr OVERLAPS Expr",
"builtInExpr : Expr IN Expr",
"builtInExpr : Expr NOT IN Expr",
"builtInExpr : EXISTS L_PAREN generalExpr R_PAREN",
"builtInExpr : ANYELEMENT L_PAREN generalExpr R_PAREN",
"builtInExpr : ELEMENT L_PAREN generalExpr R_PAREN",
"builtInExpr : FLATTEN L_PAREN generalExpr R_PAREN",
"builtInExpr : SET L_PAREN generalExpr R_PAREN",
"builtInExpr : Expr IS NULL",
"builtInExpr : Expr IS NOT NULL",
"builtInExpr : searchedCaseExpr",
"builtInExpr : TREAT L_PAREN Expr AS typeName R_PAREN",
"builtInExpr : CAST L_PAREN Expr AS typeName R_PAREN",
"builtInExpr : OFTYPE L_PAREN Expr COMMA typeName R_PAREN",
"builtInExpr : OFTYPE L_PAREN Expr COMMA ONLY typeName R_PAREN",
"builtInExpr : Expr IS OF L_PAREN typeName R_PAREN",
"builtInExpr : Expr IS NOT OF L_PAREN typeName R_PAREN",
"builtInExpr : Expr IS OF L_PAREN ONLY typeName R_PAREN",
"builtInExpr : Expr IS NOT OF L_PAREN ONLY typeName R_PAREN",
"builtInExpr : Expr LIKE Expr",
"builtInExpr : Expr NOT LIKE Expr",
"builtInExpr : Expr LIKE Expr ESCAPE Expr",
"builtInExpr : Expr NOT LIKE Expr ESCAPE Expr",
"builtInExpr : betweenPrefix AND Expr",
"builtInExpr : notBetweenPrefix AND Expr",
"builtInExpr : Expr OR Expr",
"builtInExpr : NOT Expr",
"builtInExpr : Expr AND Expr",
"builtInExpr : equalsOrAssignExpr",
"equalsOrAssignExpr : assignExpr",
"equalsOrAssignExpr : equalsExpr",
"assignExpr : Expr EQUAL Expr",
"equalsExpr : Expr OP_EQ Expr",
"aliasExpr : Expr AS identifier",
"aliasExpr : Expr",
"aliasExprList : aliasExpr",
"aliasExprList : aliasExprList COMMA aliasExpr",
"searchedCaseExpr : CASE whenThenExprList END",
"searchedCaseExpr : CASE whenThenExprList caseElseExpr END",
"whenThenExprList : WHEN Expr THEN Expr",
"whenThenExprList : whenThenExprList WHEN Expr THEN Expr",
"caseElseExpr : ELSE Expr",
"ctorExpr : ROW L_PAREN aliasExprList R_PAREN",
"ctorExpr : MULTISET L_PAREN exprList R_PAREN",
"ctorExpr : L_CURLY exprList R_CURLY",
"dotExpr : Expr DOT identifier",
"refExpr : REF L_PAREN generalExpr R_PAREN",
"derefExpr : DEREF L_PAREN generalExpr R_PAREN",
"createRefExpr : CREATEREF L_PAREN Expr COMMA Expr R_PAREN",
"createRefExpr : CREATEREF L_PAREN Expr COMMA Expr COMMA typeName R_PAREN",
"keyExpr : KEY L_PAREN generalExpr R_PAREN",
"groupPartitionExpr : GROUPPARTITION L_PAREN optAllOrDistinct generalExpr R_PAREN",
"methodExpr : dotExpr L_PAREN R_PAREN",
"methodExpr : dotExpr L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
"methodExpr : dotExpr L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship",
"methodExpr : identifier L_PAREN R_PAREN",
"methodExpr : identifier L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
"methodExpr : identifier L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA typeName R_PAREN",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA typeName COMMA identifier R_PAREN",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA typeName COMMA identifier COMMA identifier R_PAREN",
"optWithRelationship :",
"optWithRelationship : relationshipList",
"relationshipList : WITH relationshipExpr",
"relationshipList : relationshipList relationshipExpr",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA typeName R_PAREN",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA typeName COMMA identifier R_PAREN",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA typeName COMMA identifier COMMA identifier R_PAREN",
"typeName : identifier",
"typeName : qualifiedTypeName",
"typeName : identifier ESCAPED_IDENTIFIER",
"typeName : qualifiedTypeName ESCAPED_IDENTIFIER",
"typeName : typeNameWithTypeSpec",
"qualifiedTypeName : typeName DOT identifier",
"typeNameWithTypeSpec : qualifiedTypeName L_PAREN R_PAREN",
"typeNameWithTypeSpec : qualifiedTypeName L_PAREN exprList R_PAREN",
"typeNameWithTypeSpec : identifier L_PAREN R_PAREN",
"typeNameWithTypeSpec : identifier L_PAREN exprList R_PAREN",
"identifier : ESCAPED_IDENTIFIER",
"identifier : simpleIdentifier",
"simpleIdentifier : IDENTIFIER",
"literalExpr : LITERAL",
"literalExpr : NULL",
"typeDef : typeName",
"typeDef : collectionTypeDef",
"typeDef : refTypeDef",
"typeDef : rowTypeDef",
"collectionTypeDef : COLLECTION L_PAREN typeDef R_PAREN",
"refTypeDef : REF L_PAREN typeName R_PAREN",
"rowTypeDef : ROW L_PAREN propertyDefList R_PAREN",
"propertyDefList : propertyDef",
"propertyDefList : propertyDefList COMMA propertyDef",
"propertyDef : identifier typeDef",
};

//#line 1415 "CqlGrammar.y"

#pragma warning restore 414
//###############################################################
// method: yylexdebug : check lexer state
//###############################################################
void yylexdebug(int state,int ch)
{
String s=null;
  if (ch < 0) ch=0;
  if (ch <= YYMAXTOKEN) //check index bounds
     s = yyname[ch];    //now get it
  if (s==null)
    s = "illegal-symbol";
  debug("state "+state+", reading "+ch+" ("+s+")");
}



//###############################################################
// method: yyparse : parse input and execute indicated items
//###############################################################
int yyparse()
{
    int yyn;       //next thing to do
    int yym;       //
    int yystate;   //current parsing state from state table
#if YYDEBUG
    String yys;    //current token string
#endif
    init_stacks();
    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1);

    yystate = 0;
	 state_push(yystate);

yyloop:
#if YYDEBUG
    debug("yyloop"); 
#endif
	yyn = yydefred[yystate];
    if (yyn!=0) goto yyreduce;
#if YYDEBUG
	debug("yyn:"+yyn+"  state:"+yystate+"  char:"+yychar);
#endif
    if (yychar < 0)
    {
        yychar = yylex();
		if (yychar < 0) yychar = 0;
    }
	yyn = yysindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        debug("state "+yystate+", shifting to state "+yytable[yyn]+"");
#endif
	     yystate = yytable[yyn];
		 state_push(yystate);
        val_push( yylval );
        yychar = (-1);
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
	yyn = yyrindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
#if YYDEBUG
	     debug("reduce");
#endif
        goto yyreduce;
    }
    if (yyerrflag!=0) goto yyinrecovery;
    yyerror("syntax error");
 
    ++yynerrs;
yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if (stateptr < 0)
            {
                goto yyoverflow;
            }
			 yyn = yysindex[state_peek(0)];
            if ((yyn!=0) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
                if (stateptr < 0)
                {
                    goto yyoverflow;
                }
#if YYDEBUG
                debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" ");
#endif
                yystate = yytable[yyn];
        		 state_push(yystate);
                val_push( yylval );
                goto yyloop;
            }
            else
            {
                if (stateptr < 0)
                {
                    goto yyoverflow;
                }
#if YYDEBUG
                debug("error recovery discarding state "+state_peek(0)+" ");
#endif
        		 state_pop();
                val_pop();
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = null;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (yys == null) yys = "illegal-symbol";
            debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
        }
#endif
        yychar = (-1);
        goto yyloop;
    }
yyreduce:
    yym = yylen[yyn];
#if YYDEBUG
      debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
#endif
    yyval = val_peek(yym-1);
    switch (yyn)
    {
//########## USER-SUPPLIED ACTIONS ##########
case 1:
//#line 108 "CqlGrammar.y"
{
                        yyval = _parsedTree = null;
                    }
break;
case 2:
//#line 112 "CqlGrammar.y"
{
                        yyval = _parsedTree = (Node)val_peek(0);
                    }
break;
case 3:
//#line 118 "CqlGrammar.y"
{
                        yyval = new Command(ToNodeList<NamespaceImport>(val_peek(1)),(Statement)val_peek(0));
                        SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression);
                    }
break;
case 4:
//#line 129 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 5:
//#line 133 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 6:
//#line 139 "CqlGrammar.y"
{
                        yyval = new NodeList<NamespaceImport>((NamespaceImport)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxNamespaceImportList);
                    }
break;
case 7:
//#line 144 "CqlGrammar.y"
{
                        yyval = ToNodeList<NamespaceImport>(val_peek(1)).Add((NamespaceImport)val_peek(0));
                    }
break;
case 8:
//#line 150 "CqlGrammar.y"
{
                        yyval = new NamespaceImport((Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceImport);
                    }
break;
case 9:
//#line 155 "CqlGrammar.y"
{
                        yyval = new NamespaceImport((DotExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceImport);
                    }
break;
case 10:
//#line 160 "CqlGrammar.y"
{
                        yyval = new NamespaceImport((BuiltInExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceImport);
                    }
break;
case 11:
//#line 171 "CqlGrammar.y"
{
                        yyval = new QueryStatement(ToNodeList<AST.FunctionDefinition>(val_peek(2)),(Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), (val_peek(2) != null) ? AstNodePos(val_peek(2)) : AstNodePos(val_peek(1)), EntityRes.CtxQueryStatement);
                    }
break;
case 12:
//#line 182 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 13:
//#line 186 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 14:
//#line 192 "CqlGrammar.y"
{
                        yyval = new NodeList<AST.FunctionDefinition>((AST.FunctionDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 15:
//#line 197 "CqlGrammar.y"
{
                        yyval = ToNodeList<AST.FunctionDefinition>(val_peek(1)).Add((AST.FunctionDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 16:
//#line 204 "CqlGrammar.y"
{
                        yyval = new AST.FunctionDefinition((Identifier)val_peek(5), ToNodeList<PropDefinition>(val_peek(4)), (Node)val_peek(1), Terminal(val_peek(6)).IPos, Terminal(val_peek(0)).IPos);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxFunctionDefinition);
                    }
break;
case 17:
//#line 211 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 18:
//#line 215 "CqlGrammar.y"
{
                        yyval = val_peek(1);
                    }
break;
case 19:
//#line 221 "CqlGrammar.y"
{
                        yyval = new NodeList<PropDefinition>((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 20:
//#line 226 "CqlGrammar.y"
{
                        yyval = ToNodeList<PropDefinition>(val_peek(2)).Add((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 21:
//#line 233 "CqlGrammar.y"
{
                        yyval = new PropDefinition((Identifier)val_peek(1), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFunctionDefinition);
                    }
break;
case 22:
//#line 244 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 23:
//#line 248 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 24:
//#line 254 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 25:
//#line 258 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 26:
//#line 268 "CqlGrammar.y"
{
                         yyval = new QueryExpr( (SelectClause)val_peek(5)    ,
                                             (FromClause)val_peek(4)      ,
                                             (Node)val_peek(3)            ,
                                             (GroupByClause)val_peek(2)   ,
                                             (HavingClause)val_peek(1)    ,
                                             (OrderByClause)val_peek(0)   );

                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression);
                    }
break;
case 27:
//#line 281 "CqlGrammar.y"
{ 
                          StartMethodExprCounting();
                      }
break;
case 28:
//#line 287 "CqlGrammar.y"
{
                        yyval = new SelectClause(ToNodeList<AliasedExpr>(val_peek(0)), SelectKind.Row, (DistinctKind)val_peek(2), (Node)val_peek(1), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause);
                    }
break;
case 29:
//#line 292 "CqlGrammar.y"
{ 
                        StartMethodExprCounting();
                      }
break;
case 30:
//#line 299 "CqlGrammar.y"
{
                        yyval = new SelectClause(ToNodeList<AliasedExpr>(val_peek(0)), SelectKind.Value, (DistinctKind)val_peek(2), (Node)val_peek(1), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause);
                    }
break;
case 31:
//#line 306 "CqlGrammar.y"
{
                        yyval = DistinctKind.None;
                    }
break;
case 32:
//#line 310 "CqlGrammar.y"
{
                        yyval = DistinctKind.All;
                    }
break;
case 33:
//#line 314 "CqlGrammar.y"
{
                        yyval = DistinctKind.Distinct;
                    }
break;
case 34:
//#line 320 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 35:
//#line 324 "CqlGrammar.y"
{
                        yyval = val_peek(1);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxTopSubClause);
                    }
break;
case 36:
//#line 331 "CqlGrammar.y"
{
                        yyval = new FromClause(ToNodeList<FromClauseItem>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause);
                    }
break;
case 37:
//#line 338 "CqlGrammar.y"
{
                        yyval = new NodeList<FromClauseItem>((FromClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 38:
//#line 343 "CqlGrammar.y"
{
                        yyval = ToNodeList<FromClauseItem>(val_peek(2)).Add((FromClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList);
                    }
break;
case 39:
//#line 350 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((AliasedExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem);
                    }
break;
case 40:
//#line 355 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause);
                    }
break;
case 41:
//#line 360 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause);
                    }
break;
case 42:
//#line 365 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause);
                    }
break;
case 43:
//#line 370 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause);
                    }
break;
case 44:
//#line 377 "CqlGrammar.y"
{
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause);
                    }
break;
case 45:
//#line 382 "CqlGrammar.y"
{
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause);
                    }
break;
case 46:
//#line 389 "CqlGrammar.y"
{
                        yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause);
                    }
break;
case 47:
//#line 396 "CqlGrammar.y"
{
                        yyval = JoinKind.Cross;
                    }
break;
case 48:
//#line 400 "CqlGrammar.y"
{
                        yyval = JoinKind.LeftOuter;
                    }
break;
case 49:
//#line 404 "CqlGrammar.y"
{
                        yyval = JoinKind.LeftOuter;
                    }
break;
case 50:
//#line 408 "CqlGrammar.y"
{
                        yyval = JoinKind.RightOuter;
                    }
break;
case 51:
//#line 412 "CqlGrammar.y"
{
                        yyval = JoinKind.RightOuter;
                    }
break;
case 52:
//#line 416 "CqlGrammar.y"
{
                        yyval = JoinKind.Inner;
                    }
break;
case 53:
//#line 420 "CqlGrammar.y"
{
                        yyval = JoinKind.Inner;
                    }
break;
case 54:
//#line 424 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter;
                    }
break;
case 55:
//#line 428 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter;
                    }
break;
case 56:
//#line 432 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter;
                    }
break;
case 57:
//#line 438 "CqlGrammar.y"
{
                        yyval = ApplyKind.Cross;
                    }
break;
case 58:
//#line 442 "CqlGrammar.y"
{
                        yyval = ApplyKind.Outer;
                    }
break;
case 59:
//#line 447 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 60:
//#line 451 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 61:
//#line 457 "CqlGrammar.y"
{
                        yyval = (Node)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause);
                    }
break;
case 62:
//#line 464 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 63:
//#line 468 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 64:
//#line 474 "CqlGrammar.y"
{
                        yyval = new GroupByClause(ToNodeList<AliasedExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause);
                    }
break;
case 65:
//#line 481 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 66:
//#line 485 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 67:
//#line 491 "CqlGrammar.y"
{ 
                      StartMethodExprCounting();
                    }
break;
case 68:
//#line 495 "CqlGrammar.y"
{
                        yyval = new HavingClause((Node)val_peek(0), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause);
                    }
break;
case 69:
//#line 502 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 70:
//#line 506 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 71:
//#line 512 "CqlGrammar.y"
{
                        StartMethodExprCounting();
                      }
break;
case 72:
//#line 518 "CqlGrammar.y"
{
                        yyval = new OrderByClause(ToNodeList<OrderByClauseItem>(val_peek(2)), (Node)val_peek(1), (Node)val_peek(0), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem);
                    }
break;
case 73:
//#line 525 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 74:
//#line 529 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxSkipSubClause);
                    }
break;
case 75:
//#line 536 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 76:
//#line 540 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLimitSubClause);
                    }
break;
case 77:
//#line 547 "CqlGrammar.y"
{
                        yyval = new NodeList<OrderByClauseItem>((OrderByClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 78:
//#line 552 "CqlGrammar.y"
{
                        yyval = ToNodeList<OrderByClauseItem>(val_peek(2)).Add((OrderByClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause);
                    }
break;
case 79:
//#line 559 "CqlGrammar.y"
{
                        yyval = new OrderByClauseItem((Node)val_peek(1), (OrderKind)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem);
                    }
break;
case 80:
//#line 564 "CqlGrammar.y"
{
                        yyval = new OrderByClauseItem((Node)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem);
                    }
break;
case 81:
//#line 571 "CqlGrammar.y"
{
                        yyval = OrderKind.None;
                    }
break;
case 82:
//#line 575 "CqlGrammar.y"
{
                        yyval = OrderKind.Asc;
                    }
break;
case 83:
//#line 579 "CqlGrammar.y"
{
                        yyval = OrderKind.Desc;
                    }
break;
case 84:
//#line 588 "CqlGrammar.y"
{
                        yyval = new NodeList<Node>((Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 85:
//#line 593 "CqlGrammar.y"
{
                        yyval = ToNodeList<Node>(val_peek(2)).Add((Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList);
                    }
break;
case 86:
//#line 600 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 87:
//#line 604 "CqlGrammar.y"
{
                        yyval = (QueryParameter)val_peek(0);
                    }
break;
case 88:
//#line 608 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                    }
break;
case 89:
//#line 612 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 90:
//#line 616 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 91:
//#line 620 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 92:
//#line 624 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 93:
//#line 628 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 94:
//#line 632 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        IncrementMethodExprCount();
                    }
break;
case 95:
//#line 637 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        IncrementMethodExprCount();
                    }
break;
case 96:
//#line 642 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 97:
//#line 646 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 98:
//#line 650 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 99:
//#line 654 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 100:
//#line 660 "CqlGrammar.y"
{
                        yyval = new ParenExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxParen);
                    }
break;
case 101:
//#line 667 "CqlGrammar.y"
{
                        yyval = new NodeList<Node>((Node)val_peek(2)).Add((Node)val_peek(0));
                    }
break;
case 102:
//#line 673 "CqlGrammar.y"
{
                        yyval = new NodeList<Node>((Node)val_peek(3)).Add((Node)val_peek(0));
                    }
break;
case 103:
//#line 682 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus);
                    }
break;
case 104:
//#line 687 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus);
                    }
break;
case 105:
//#line 692 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply);
                    }
break;
case 106:
//#line 697 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide);
                    }
break;
case 107:
//#line 702 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus);
                    }
break;
case 108:
//#line 707 "CqlGrammar.y"
{
                        Literal literal = val_peek(0) as Literal;
                        if ( literal != null && literal.IsNumber && !literal.IsSignedNumber )
                        {
                            literal.PrefixSign(Terminal(val_peek(1)).Token);
                            yyval = val_peek(0);
                        }
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Node)val_peek(0));
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus);
                        }

                    }
break;
case 109:
//#line 722 "CqlGrammar.y"
{
                        Literal literal = val_peek(0) as Literal;
                        if ( null != literal && literal.IsNumber && !literal.IsSignedNumber )
                        {
                            literal.PrefixSign(Terminal(val_peek(1)).Token);
                            yyval = val_peek(0);
                        }
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Node)val_peek(0));
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus);
                        }
                    }
break;
case 110:
//#line 739 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual);
                    }
break;
case 111:
//#line 744 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan);
                    }
break;
case 112:
//#line 749 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual);
                    }
break;
case 113:
//#line 754 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan);
                    }
break;
case 114:
//#line 759 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual);
                    }
break;
case 115:
//#line 767 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect);
                    }
break;
case 116:
//#line 772 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion);
                    }
break;
case 117:
//#line 777 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Node)val_peek(3), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll);
                    }
break;
case 118:
//#line 782 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept);
                    }
break;
case 119:
//#line 787 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps);
                    }
break;
case 120:
//#line 792 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn);
                    }
break;
case 121:
//#line 797 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Node)val_peek(3), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn);
                    }
break;
case 122:
//#line 802 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists);
                    }
break;
case 123:
//#line 807 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement);
                    }
break;
case 124:
//#line 812 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement);
                    }
break;
case 125:
//#line 817 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten);
                    }
break;
case 126:
//#line 822 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet);
                    }
break;
case 127:
//#line 830 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Node)val_peek(2));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull);
                    }
break;
case 128:
//#line 835 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Node)val_peek(3));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull);
                    }
break;
case 129:
//#line 843 "CqlGrammar.y"
{
                        yyval = (CaseExpr)val_peek(0);
                    }
break;
case 130:
//#line 850 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat);
                    }
break;
case 131:
//#line 855 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast);
                    }
break;
case 132:
//#line 864 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.OfType, 
                                             Terminal(val_peek(5)).Token, 
                                             (Node)val_peek(3), 
                                             (Node)val_peek(1),
                                             Literal.NewBooleanLiteral( false ) /* only */);
                                             
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType);
                    }
break;
case 133:
//#line 874 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.OfType, 
                                             "OFTYPE ONLY", 
                                             (Node)val_peek(4), 
                                             (Node)val_peek(1),
                                             Literal.NewBooleanLiteral( true ) /* only */);
                                             
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly);
                    }
break;
case 134:
//#line 887 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS OF",
                                                (Node)val_peek(5),
                                                (Node)val_peek(1),
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( false )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf);
                    }
break;
case 135:
//#line 899 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS NOT OF",
                                                (Node)val_peek(6),  /* instance */
                                                (Node)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( true  )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf);
                    }
break;
case 136:
//#line 911 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS OF ONLY",
                                                (Node)val_peek(6),  /* instance */
                                                (Node)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true  ), /* only */
                                                Literal.NewBooleanLiteral( false )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf);
                    }
break;
case 137:
//#line 923 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS NOT OF ONLY",
                                                (Node)val_peek(7),  /* instance */
                                                (Node)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true ), /* only */
                                                Literal.NewBooleanLiteral( true )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf);
                    }
break;
case 138:
//#line 938 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike);
                    }
break;
case 139:
//#line 943 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not,
                                              Terminal(val_peek(2)).Token,
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Node)val_peek(3), (Node)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike);
                    }
break;
case 140:
//#line 950 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Node)val_peek(4), (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike);
                    }
break;
case 141:
//#line 955 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not,
                                              Terminal(val_peek(4)).Token,
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Node)val_peek(5), (Node)val_peek(2), (Node)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike);
                    }
break;
case 142:
//#line 965 "CqlGrammar.y"
{
                        NodeList<Node> elist = (NodeList<Node>)val_peek(2);
                        System.Diagnostics.Debug.Assert(elist.Count==2);
                        yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Node)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween);
                    }
break;
case 143:
//#line 975 "CqlGrammar.y"
{
                        NodeList<Node> elist = (NodeList<Node>)val_peek(2);
                        System.Diagnostics.Debug.Assert(elist.Count==2);
                        yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Node)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween);
                    }
break;
case 144:
//#line 985 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr);
                    }
break;
case 145:
//#line 990 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot);
                    }
break;
case 146:
//#line 995 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.And, "and", (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd);
                    }
break;
case 147:
//#line 1000 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 148:
//#line 1006 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 149:
//#line 1010 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 150:
//#line 1016 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    }
break;
case 151:
//#line 1023 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    }
break;
case 152:
//#line 1030 "CqlGrammar.y"
{
                        yyval = new AliasedExpr((Node)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias);
                    }
break;
case 153:
//#line 1035 "CqlGrammar.y"
{
                        yyval = new AliasedExpr((Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 154:
//#line 1042 "CqlGrammar.y"
{
                       yyval = new NodeList<AliasedExpr>((AliasedExpr)val_peek(0));
                       SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 155:
//#line 1047 "CqlGrammar.y"
{
                       yyval = ToNodeList<AliasedExpr>(val_peek(2)).Add((AliasedExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList);
                    }
break;
case 156:
//#line 1054 "CqlGrammar.y"
{
                        yyval = new CaseExpr(ToNodeList<WhenThenExpr>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase);
                    }
break;
case 157:
//#line 1059 "CqlGrammar.y"
{
                        yyval = new CaseExpr(ToNodeList<WhenThenExpr>(val_peek(2)), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase);
                    }
break;
case 158:
//#line 1066 "CqlGrammar.y"
{
                        yyval = new NodeList<WhenThenExpr>(new WhenThenExpr((Node)val_peek(2), (Node)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen);
                    }
break;
case 159:
//#line 1071 "CqlGrammar.y"
{
                        yyval = ToNodeList<WhenThenExpr>(val_peek(4)).Add(new WhenThenExpr((Node)val_peek(2), (Node)val_peek(0)));
                    }
break;
case 160:
//#line 1077 "CqlGrammar.y"
{
                        yyval = (Node)val_peek(0);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse);
                    }
break;
case 161:
//#line 1084 "CqlGrammar.y"
{
                        yyval = new RowConstructorExpr(ToNodeList<AliasedExpr>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor);
                    }
break;
case 162:
//#line 1089 "CqlGrammar.y"
{
                        yyval = new MultisetConstructorExpr(ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor);
                    }
break;
case 163:
//#line 1094 "CqlGrammar.y"
{
                        yyval = new MultisetConstructorExpr(ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor);
                    }
break;
case 164:
//#line 1101 "CqlGrammar.y"
{
                        yyval = new DotExpr((Node)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMemberAccess);
                    }
break;
case 165:
//#line 1108 "CqlGrammar.y"
{
                        yyval = new RefExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef);
                    }
break;
case 166:
//#line 1115 "CqlGrammar.y"
{
                        yyval = new DerefExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxDeref);
                    }
break;
case 167:
//#line 1122 "CqlGrammar.y"
{
                        yyval = new CreateRefExpr((Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef);
                    }
break;
case 168:
//#line 1127 "CqlGrammar.y"
{
                        yyval = new CreateRefExpr((Node)val_peek(5), (Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef);
                    }
break;
case 169:
//#line 1134 "CqlGrammar.y"
{
                        yyval = new KeyExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxKey);
                    }
break;
case 170:
//#line 1141 "CqlGrammar.y"
{
                        yyval = new GroupPartitionExpr((DistinctKind)val_peek(2), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxGroupPartition);
                    }
break;
case 171:
//#line 1148 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(2)).Identifier), EntityRes.CtxMethod);
                    }
break;
case 172:
//#line 1153 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(5), (DistinctKind)val_peek(3), ToNodeList<Node>(val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(5)).Identifier), EntityRes.CtxMethod);
                    }
break;
case 173:
//#line 1158 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(5), (DistinctKind)val_peek(3), new NodeList<Node>((Node)val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(5)).Identifier), EntityRes.CtxMethod);
                    }
break;
case 174:
//#line 1163 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxMethod);
                    }
break;
case 175:
//#line 1168 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(5), (DistinctKind)val_peek(3), ToNodeList<Node>(val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxMethod);
                    }
break;
case 176:
//#line 1173 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(5),(DistinctKind)val_peek(3), new NodeList<Node>((Node)val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxMethod);
                    }
break;
case 177:
//#line 1183 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(3), (Node)val_peek(1), null, null);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate);
                    }
break;
case 178:
//#line 1191 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(5), (Node)val_peek(3), (Identifier)val_peek(1), null);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate);
                    }
break;
case 179:
//#line 1199 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(7), (Node)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
                    }
break;
case 180:
//#line 1206 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 181:
//#line 1210 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 182:
//#line 1216 "CqlGrammar.y"
{
                        yyval = new NodeList<RelshipNavigationExpr>((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList);
                    }
break;
case 183:
//#line 1221 "CqlGrammar.y"
{
                        yyval = ToNodeList<RelshipNavigationExpr>(val_peek(1)).Add((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList);
                    }
break;
case 184:
//#line 1231 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(3), (Node)val_peek(1), null, null);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship);
                    }
break;
case 185:
//#line 1239 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(5), (Node)val_peek(3), null, (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
                    }
break;
case 186:
//#line 1247 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(7), (Node)val_peek(5), (Identifier)val_peek(1), (Identifier)val_peek(3));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship);
                    }
break;
case 187:
//#line 1254 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
                    }
break;
case 188:
//#line 1259 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
                    }
break;
case 189:
//#line 1264 "CqlGrammar.y"
{
                        Identifier identifier = (Identifier)val_peek(1);
                        Identifier escapedIdentifier = (Identifier)val_peek(0);
                        if (identifier.IsEscaped || escapedIdentifier.Name.Length > 0)
                        {
                            throw EntityUtil.EntitySqlError(identifier.ErrCtx, System.Data.Entity.Strings.InvalidMetadataMemberName);
                        }
                        yyval = new Identifier(identifier.Name + "[]", /*isEscaped*/false, _query, AstNodePos(val_peek(1)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeName);
                    }
break;
case 190:
//#line 1275 "CqlGrammar.y"
{
                        DotExpr dotExpr = (DotExpr)val_peek(1);
                        Identifier identifier = dotExpr.Identifier;
                        Identifier escapedIdentifier = (Identifier)val_peek(0);
                        if (identifier.IsEscaped || escapedIdentifier.Name.Length > 0)
                        {
                            throw EntityUtil.EntitySqlError(identifier.ErrCtx, System.Data.Entity.Strings.InvalidMetadataMemberName);
                        }
                        yyval = new DotExpr(dotExpr.Left, new Identifier(identifier.Name + "[]", /*isEscaped*/false, _query, AstNodePos(val_peek(1))));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeName);
                    }
break;
case 191:
//#line 1287 "CqlGrammar.y"
{
                        yyval = (MethodExpr)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
                    }
break;
case 192:
//#line 1294 "CqlGrammar.y"
{
                        yyval = new DotExpr((Node)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxTypeName);
                    }
break;
case 193:
//#line 1301 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(2)).Identifier), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 194:
//#line 1306 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(3), DistinctKind.None, ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(3)).Identifier), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 195:
//#line 1311 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 196:
//#line 1316 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(3), DistinctKind.None, ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 197:
//#line 1323 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier);
                    }
break;
case 198:
//#line 1328 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier);
                    }
break;
case 199:
//#line 1335 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                    }
break;
case 200:
//#line 1341 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral);
                    }
break;
case 201:
//#line 1346 "CqlGrammar.y"
{
                        yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral);
                    }
break;
case 202:
//#line 1357 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 203:
//#line 1361 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 204:
//#line 1365 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 205:
//#line 1369 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 206:
//#line 1375 "CqlGrammar.y"
{
                        yyval = new CollectionTypeDefinition((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCollectionTypeDefinition);
                    }
break;
case 207:
//#line 1382 "CqlGrammar.y"
{
                        yyval = new RefTypeDefinition((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRefTypeDefinition);
                    }
break;
case 208:
//#line 1389 "CqlGrammar.y"
{
                        yyval = new RowTypeDefinition(ToNodeList<PropDefinition>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowTypeDefinition);
                    }
break;
case 209:
//#line 1396 "CqlGrammar.y"
{
                        yyval = new NodeList<PropDefinition>((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 210:
//#line 1401 "CqlGrammar.y"
{
                        yyval = ToNodeList<PropDefinition>(val_peek(2)).Add((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 211:
//#line 1408 "CqlGrammar.y"
{
                        yyval = new PropDefinition((Identifier)val_peek(1), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRowTypeDefinition);
                    }
break;

//########## END OF USER-SUPPLIED ACTIONS ##########
    }
#if YYDEBUG
    debug("reduce");
#endif
	 state_drop( yym );
    yystate = state_peek(0);
    val_drop( yym );
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        debug("After reduction, shifting from state 0 to state "+YYFINAL+"");
#endif
		 yystate = YYFINAL;
        state_push( YYFINAL );
        val_push( yyval );
        if (yychar < 0)
        {
            yychar = yylex();
			if (yychar < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            yylexdebug(yystate,yychar);
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
	yyn = yygindex[yym];
    if ((yyn!=0) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
    if (stateptr < 0)
    {
        goto yyoverflow;
    }
#if YYDEBUG
    debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+"");
#endif
	 state_push(yystate);
    val_push( yyval );
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow");
yyabort:
    return (1);
yyaccept:
    return (0);
}

//## end of method parse() ######################################



}
//################### END OF CLASS ######################
}
//################### END OF NAMESPACE ######################
